SET NOCOUNT ON DECLARE @NOMBRE_TABLA sysname DECLARE @iColumna int,@iUltimaColumna int, @NombreColumna sysname, @TipoColumna sysname, @Longitud int SELECT @NOMBRE_TABLA = MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE= 'BASE TABLE' AND TABLE_NAME!= 'sysdiagrams' WHILE @NOMBRE_TABLA IS NOT NULL BEGIN PRINT '======================' + @NOMBRE_TABLA + ':=========================' SELECT @iColumna = 0, @iUltimaColumna = max(ORDINAL_POSITION) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @NOMBRE_TABLA WHILE @iColumna < @iUltimaColumna BEGIN SELECT @iColumna = min(ORDINAL_POSITION) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @NOMBRE_TABLA and ORDINAL_POSITION > @iColumna; -- SELECT @NombreColumna = IC.COLUMN_NAME, @TipoColumna = IC.DATA_TYPE, @Longitud = CASE WHEN CAST(IC.DATA_TYPE AS NVARCHAR) IN ('char','nchar','varchar','nvarchar','text','ntext') THEN IC.CHARACTER_MAXIMUM_LENGTH ELSE NULL END FROM INFORMATION_SCHEMA.COLUMNS IC WHERE IC.TABLE_NAME = @NOMBRE_TABLA and IC.ORDINAL_POSITION = @iColumna; PRINT '. '+ @NombreColumna + ' ' + @TipoColumna + ' ' + ISNULL(CAST(@Longitud AS NVARCHAR(64)),'') -- END SELECT @NOMBRE_TABLA= MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME> @NOMBRE_TABLA AND TABLE_TYPE= 'BASE TABLE' AND TABLE_NAME!= 'sysdiagrams' END
domingo, 4 de diciembre de 2011
DICCIONARIO DE DATOS CON SQL SERVER
En internet hay varios ejemplos que abordan este tema sin embargo ninguno de ellos me ha terminado de gustar, de manera rapida escribo este script que hace el trabajo que 'por ahora' requiero. En otra oportunidad profundizaré mas en el tema.
Para este ejemplo hago uso basicamente de: INFORMATION_SCHEMA.TABLES para obtener informacion de las tablas de la bd e INFORMATION_SCHEMA.COLUMNS para obtener informacion de cada columna por cada tabla.
Sin mas preambulo aca el script:
Etiquetas:
DICCIONARIO DE DATOS,
INFORMATION_SCHEMA.COLUMNS,
INFORMATION_SCHEMA.TABLES,
SQL SERVER,
while
Suscribirse a:
Entradas (Atom)