beroende på vilken version av SQL Server du kör kan metoden för att fråga och returnera en lista över alla användarskapade tabeller skilja sig något. Nedan undersöker vi kortfattat TSQL-satserna som kan användas för att hämta en tabelllista för både den äldre SQL Server 2000 och den nyare 2005-versionen eller bortom.,
lista tabeller i SQL Server 2000
för äldre versioner av SQL Server (t.ex. SQL Server 2000, även om den här metoden också stöds i SQL Server 2005 för bakåtkompatibilitet), måste du frågaSYS.SYSOBJECTS
metadatavyn. SYS.SYSOBJECTS
innehåller en rad för varje objekt som har skapats i databasen, inklusivestored procedures
,views
ochuser tables
(vilket är viktigt att skilja frånsystem tables
.,)
tabellenSYSOBJECTS
innehåller ett par dussin kolumner med data eftersom den måste innehålla information om praktiskt taget allt som läggs till servern över tiden. För att hitta en lista med användarskapade tabeller (vilket ignorerar system tables
) måste vi därför hitta resultat där kolumnen xtype
(som anger kolumnen object type
för den raden) är lika med värdet U
, som står för user table
.huvudgrupp> . , Det resulterande TSQL-uttalandet ska se ut så här:
SELECT *FROM SYSOBJECTSWHERE xtype = 'U';GO
notera: eftersom SYSOBJECTS
är en del av namnområdet SYS
, när du frågar SYSOBJECTS
är det onödigt att ange att SYSOBJECTS
är en del av det globala namnområdet SYS
, så vi kan utelämna det som visas i exemplet ovan.
detta kommer att returnera en resultatlista över alla användarskapade tabeller., Eftersom mängden information som returneras när du frågar alla kolumner är ganska stor kanske du vill trimma resultaten genom att bara visa kolumnen name
och kanske crdate
(Datum för skapande):
SELECT name, crdateFROM SYSOBJECTSWHERE xtype = 'U';GO
lista tabeller i SQL Server 2005 eller nyare
lista alla tabeller i SQL Server när du använder en nyare version (SQL 2005 eller högre) är en fråga om att fråga INFORMATION_SCHEMA
vyer som automatiskt är inbyggda i SQL Server., Med dessa kan du enkelt se en mängd olika metadata för den här SQL Server-instansen, inklusive information om COLUMNS
, ROUTINES
och till och med TABLES
.
Du kanske märker att det finns fyra kolumner som returneras när du använder vynINFORMATION_SCHEMA.TABLES
, men den viktigaste kolumnen är TABLE_TYPE
, som avgör om tabellen i den raden är en faktisk tabell (BASE TABLE
) eller en vy (VIEW
).,för att returnera alla tabeller och vyer i en fråga, utför du följande TSQL-uttalande:
SELECT *FROM INFORMATION_SCHEMA.TABLES;GO
det kan också vara klokt att ange den Databas du vill fråga:
SELECT *FROM databaseName.INFORMATION_SCHEMA.TABLES;GO
om du bara vill hämta faktiska tabeller och filter Lägg till enWHERE TABLE_TYPE = 'BASE TABLE'
– klausul:
SELECT *FROM databaseName.INFORMATION_SCHEMA.TABLESWHERE TABLE_TYPE = 'BASE TABLE';GO