A seconda della versione di SQL Server in esecuzione, il metodo per eseguire query e restituire un elenco di tutte le tabelle create dall'utente potrebbe differire leggermente. Di seguito esamineremo brevemente le istruzioni TSQL che possono essere utilizzate per recuperare un elenco di tabelle sia per la versione precedente di SQL Server 2000 che per la versione 2005 più recente o successiva.
Elencare le tabelle in SQL Server 2000
Per le versioni precedenti di SQL Server (come SQL Server 2000, sebbene questo metodo sia supportato anche in SQL Server 2005 per la compatibilità con le versioni precedenti), dovrai eseguire una query su SYS.SYSOBJECTS
vista dei metadati. SYS.SYSOBJECTS
contiene una riga per ogni oggetto che è stato creato nel database, incluse le stored procedures
, views
e user tables
(che sono importanti da distinguere da system tables
.)
Il SYSOBJECTS
table ospita un paio di dozzine di colonne di dati poiché deve contenere informazioni su praticamente tutto ciò che è stato aggiunto al server nel tempo. Pertanto, per trovare un elenco di tabelle create dall'utente (ignorando così system tables
), dovremo trovare risultati in cui xtype
colonna (che specifica il object type
per quella riga) è uguale al valore U
, che sta per user table
. L'istruzione TSQL risultante dovrebbe essere simile a questa:
SELECT
*
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Nota:da SYSOBJECTS
fanno parte del SYS
namespace, quando si esegue una query su SYSOBJECTS
non è necessario specificare che SYSOBJECTS
fa parte del SYS
globale namespace, quindi possiamo ometterlo come mostrato nell'esempio sopra.
Ciò restituirà un elenco di risultati di tutte le tabelle create dall'utente. Poiché la quantità di informazioni restituite quando si interrogano tutte le colonne è piuttosto grande, potresti voler tagliare i risultati visualizzando solo il name
colonna e forse il crdate
(data di creazione):
SELECT
name,
crdate
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Elencare le tabelle in SQL Server 2005 o versioni successive
L'elenco di tutte le tabelle nel server SQL quando si utilizza una versione più recente (SQL 2005 o successiva) è una questione di query su INFORMATION_SCHEMA
viste che vengono automaticamente integrate in SQL Server. Questi ti consentono di visualizzare facilmente un'ampia varietà di metadati per questa particolare istanza di SQL Server, comprese le informazioni su COLUMNS
, ROUTINES
, e anche TABLES
.
Potresti notare che vengono restituite quattro colonne quando utilizzi INFORMATION_SCHEMA.TABLES
view, ma la colonna più importante è TABLE_TYPE
, che determina se la tabella in quella riga è una tabella effettiva (BASE TABLE
) o una vista (VIEW
).
Per restituire tutte le tabelle e viste in una query, eseguire la seguente istruzione TSQL:
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES;
GO
Potrebbe anche essere saggio specificare il database che desideri interrogare:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES;
GO
Se desideri solo recuperare le tabelle effettive e filtrare le viste dai risultati, aggiungi un WHERE TABLE_TYPE = 'BASE TABLE'
clausola:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES
WHERE
TABLE_TYPE = 'BASE TABLE';
GO