|
O meglio: "come tirar fuori da un database l'elenco delle tabelle presenti con le relative colonne e proprietà?". Esistono diverse soluzioni al problema.
E' possibile interrogare le tabelle di sistema sysobjects e syscolumns contenute in ogni database, oppure le viste di sistema INFORMATION_SCHEMA.TABLES e INFORMATION_SCHEMA.COLUMNS sempre relativamente a un database.
SELECT * FROM INFORMATION_SCHEMA.TABLES
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
Queste ultime fanno parte di un insieme di viste conformi allo standard ANSI SQL-92, che rappresentano un'astrazione dei dati delle tabelle di sistema, quindi mettono al riparo da cattive sorprese che possono sopraggiungere con aggiornamenti di prodotto che modifichino le tabelle di sistema. Perciò, sono da preferire alla prima soluzione. Nel codice T-SQL che segue, sono state messe in join le due viste sopra citate per ottenere il risultato desiderato nella domanda di partenza.
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES AS T
INNER JOIN
INFORMATION_SCHEMA.COLUMNS AS C
ON
T.Table_Name = C.Table_Name
WHERE
T.Table_type = 'BASE TABLE'
ORDER BY
T.Table_Name, C.Ordinal_Position
Un'altra strada possibile è la stored procedure di sistema sp_help [ [ @objname = ] name ], la quale restiuisce tutte le proprietà dell'oggetto specificato.
sp_help Authors
|