Leer la metadata de SQL Server no es para nada complejo, y tiene una buena documentación. Una tarea útil y que es bastante buscada en los foros es listar las columnas de las tablas, con sus tipos de datos, Foreing Keys, Primary Keys, etc.
No es muy común hacer estas lecturas, pero si sirve para un DBA, o un desarrollador que quiere automatizar procesos o incluso crearse alguna especie de IDE personalizado.
En el siguiente query verán listados los nombres, el id, tipo de dato, precision, si soporta nulo, si es identity, sus FK entre otros.
select C.object_id as 'Id', C.name as 'Columna', T.name as 'Tipo', C.max_length as 'Longitud',C.precision as 'Precision', C.scale as 'Escala', C.is_nullable as 'nullable',C.is_identity as 'Identity?', T2.name as 'Tabla Padre',C2.name as 'Columna Padre' from sys.columns as C inner join sys.types as T on T.user_type_id = C.user_type_id join sys.objects as O on O.object_id = C.object_id left join sys.foreign_key_columns as FKC on FKC.parent_object_id = C.object_id and FKC.parent_column_id = C.column_id left join sys.tables as T2 on T2.object_id = FKC.referenced_object_id left join sys.columns as C2 on C2.object_id = FKC.parent_object_id and C2.column_id = FKC.parent_column_id where o.object_id = @idtabla -- aqui colocan el id que desean order by C.column_id asc
Para ver las PK podriamos ponerlos en el mismo query, aunque decidi separarlos porque es mas complejo trabajar si esta compuesto por varias columnas.
SELECT i.name AS index_name
,ic.index_column_id
,key_ordinal
,c.name AS column_name
,TYPE_NAME(c.user_type_id)AS column_type
,is_identity
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.object_id = ic.object_id AND i.index_id = ic.index_id
INNER JOIN sys.columns AS c
ON ic.object_id = c.object_id AND c.column_id = ic.column_id
WHERE i.is_primary_key = 1
AND i.object_id = OBJECT_ID('<schema_name.table_name>'); -- colocan el nombre de la tabla o pueden elegir directamente el id
GO








en
en
en
en
en
Salu2, necesito leer metadatos pero específicamente las restricciones UNIQUE y CHECK tanto a nivel de columna como de tabla… espero puedan ayudarme