giovedì 7 ottobre 2010

L'utilizzo del catalogo di sistema per SqlServer

Se serve aggiungere una colonna a tutte le tabelle del Database, un piccolo generatore per lo script
dal quale si possono evolvere le infinite varianti :


SELECT name, 'ALTER TABLE [dbo].['+ name + '] ADD NuovoCampoID bigint NULL
FROM sysobjects WHERE (xtype = 'U')

lanciare la query nel Management Studio e recuperare lo script con un semplice copia/incolla


Allo stesso modo iteriamo gli oggetti Colonna per interrogare il catalogo di database ed estrapolare
per controllo quali campi per tabella sono di tipo IDENTITY

SELECT OBJECT_SCHEMA_NAME(T.[object_id],DB_ID()) AS [Schema],   
        T.[name] AS [table_name], AC.[name] AS [column_name],   
        TY.[name] AS system_data_type, AC.[max_length],  
        AC.[precision], AC.[scale], AC.[is_nullable], AC.[is_ansi_padded], AC.is_identity , AC.default_object_id 
FROM sys.[tables] AS T   
INNER JOIN sys.[all_columns] AC ON T.[object_id] = AC.[object_id]  
INNER JOIN sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id] AND AC.[user_type_id] = TY.[user_type_id]  
WHERE T.[is_ms_shipped] = 0  AND AC.is_identity=1
ORDER BY T.[name], AC.[column_id]


Ovviamente leggendo il contenuto dei cataloghi utilizzati, sarà possibile estrapolare qualunque tipo d'informazione dal nostro buon SqlServer. 

0 commenti:

Posta un commento