Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Tabelle di elenco di SQL Server:come mostrare tutte le tabelle

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