SQL Server – Metadata

Pensando nuevamente en lo que me resultó más sencillo de entender a este respecto, a continuación les pongo la definición de Metadata con la que todo para mi quedo clarisimo:

Los metadatos son simplemente “datos de los datos”. Y a este respecto SQL Server tiene un buen numero de funciones que se pueden usar para obtener información sobre la estructura de la base de datos.

Tenemos una vista que nos muestra todas las tablas y su respectico esquema en una base de datos,

select *
from pubs.information_schema.tables

con lo que obtendriamos lo siguiente

TABLE_CATALOG    TABLE_SCHEMA    TABLE_NAME    TABLE_TYPE
master    dbo    spt_fallback_db    BASE TABLE
master    dbo    spt_fallback_dev    BASE TABLE
master    dbo    spt_fallback_usg    BASE TABLE
master    dbo    spt_monitor    BASE TABLE
master    dbo    spt_values    BASE TABLE
master    dbo    MSreplication_options    BASE TABLE
master    dbo    DiasPoAmor    BASE TABLE
master    dbo    PrestamosReales    BASE TABLE

donde TABLE_CATALOG es la base de datos.

Otra vista es la de columnas que queda mas o menos así,

select  TABLE_CATALOG,
    TABLE_SCHEMA,    
    TABLE_NAME,
    COLUMN_NAME,
    DATA_TYPE,
    CHARACTER_MAXIMUM_LENGTH
from information_schema.columns
where table_name = 'sucursal_cat'

con lo que obtendremos las columnas en una tabla con su tipo de dato y su longitud maxima

Tenemos funciones como

SELECT COLUMNPROPERTY( OBJECT_ID('sucursal_cat'),'IdSucursal','IsIdentity')

donde 'sucursal_cat' es la tabla y 'IdSucursal' es el campo que queremos saber si es o no Identity, 
en caso de que lo fuera la funcion regresaria un 1, de otra manera regresa un 0.

Otra funcion es la ObjectProperty, que trabaja como el ColumnProperty pero tiene muchas
mas propiedades. Por ejemplo, el siguiente query mostrara que tablas tienen identities, 
indeces clustered y llaves primarias

select  table_name, 
		IDNTY = objectproperty(object_id(TABLE_NAME), 'TableHasIdentity'),
		CLSTRD = objectproperty(object_id(TABLE_NAME), 'TableHasClustIndex'),
		PK = objectproperty(object_id(TABLE_NAME), 'TableHasPrimaryKey')
from information_schema.tables
where table_type = 'base table'

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s