Created
December 3, 2017 19:28
-
-
Save tech-andgar/fade52ded7be732ab85d1d686a406444 to your computer and use it in GitHub Desktop.
dataDictionarySQLFull
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SELECT T.name AS tabla, | |
C.name AS columna, | |
TYP.name AS tipo, | |
CASE WHEN C.is_nullable=0 THEN 'Falso' ELSE 'Verdadero' END AS EsNulo, | |
CASE WHEN C.is_identity=0 THEN 'Falso' ELSE 'Verdadero' END AS EsAutonumerico, | |
CASE WHEN IND.is_unique=0 THEN 'Falso' ELSE 'Verdader' END AS EsUnico, | |
CASE WHEN IND.is_primary_key=0 THEN 'Falso' ELSE 'Verdadero' END AS EsPrimaryKey, | |
CASE WHEN F.parent_object_id IS NOT NULL THEN F.Tabla + '.' + F.Columna ELSE '' END AS FK, | |
COMTS.VALUE AS descripcion | |
,C.* | |
FROM sys.TABLES T | |
INNER JOIN sys.COLUMNS C ON T.object_id=C.object_id | |
INNER JOIN sys.systypes TYP ON TYP.xtype=C.system_type_id | |
LEFT JOIN sys.extended_properties COMTS ON COMTS.major_id=C.object_id AND COMTS.minor_id=C.column_id | |
-- Se obtienen los datos de la llaves foraneas en caso de existir | |
LEFT JOIN ( | |
SELECT TFK.name AS Tabla, CFK.name AS Columna, FK.parent_object_id, FKD.parent_column_id | |
FROM sys.foreign_keys FK | |
INNER JOIN sys.foreign_key_columns FKD ON FKD.constraint_object_id=FK.object_id | |
INNER JOIN sys.COLUMNS CFK ON CFK.column_id=FKD.referenced_column_id AND CFK.object_id=FKD.referenced_object_id | |
INNER JOIN sys.TABLES TFK ON TFK.object_id=CFK.object_id | |
) F ON F.parent_object_id=T.object_id AND F.parent_column_id=C.column_id | |
-- Considerando que una columna puede estar asociado a más de un indice, | |
-- nos aseguramos de traer un solo registro por columna para no duplicar | |
-- los registros. | |
LEFT JOIN ( | |
SELECT I.object_id, | |
IC.column_id, | |
MIN(I.index_id) AS index_id, | |
MAX(CAST(I.is_unique AS INT)) AS is_unique, | |
MAX(CAST(I.is_primary_key AS INT)) AS is_primary_key | |
FROM sys.indexes I | |
INNER JOIN sys.index_columns IC ON I.object_id=IC.object_id AND I.index_id=IC.index_id | |
GROUP BY I.object_id, IC.column_id | |
) IND ON IND.object_id=C.object_id AND IND.column_id=C.column_id | |
WHERE T.name<> 'sysdiagrams' AND TYP.name<> 'sysname' | |
ORDER BY T.name, C.column_id |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment