Afhængigt af den version af SQL Server, du kører, kan metoden til at forespørge og returnere en liste over alle brugeroprettede tabeller afvige en smule. Nedenfor vil vi kort undersøge de TSQL-sætninger, der kan bruges til at hente en tabelliste for både den ældre SQL Server 2000 og den nyere 2005-version eller senere.
Opstilling af tabeller i SQL Server 2000
For ældre versioner af SQL Server (såsom SQL Server 2000, selvom denne metode også understøttes i SQL Server 2005 for bagudkompatibilitet), skal du forespørge SYS.SYSOBJECTS
metadatavisning. SYS.SYSOBJECTS
indeholder en række for hvert objekt, der er blevet oprettet i databasen, inklusive stored procedures
, views
, og user tables
(som er vigtige at skelne fra system tables
.)
SYSOBJECTS
tabellen rummer et par dusin kolonner med data, da den skal indeholde information om stort set alt, der er tilføjet serveren over tid. Derfor for at finde en liste over brugeroprettede tabeller (og dermed ignorere system tables
), bliver vi nødt til at finde resultater, hvor xtype
kolonne (som angiver object type
for den række) er lig med værdien U
, som står for user table
. Den resulterende TSQL-sætning skulle se sådan ud:
SELECT
*
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Bemærk:Siden SYSOBJECTS
er en del af SYS
navneområde, når du forespørger SYSOBJECTS
det er unødvendigt at specificere at SYSOBJECTS
er en del af den globale SYS
navneområde, så vi kan udelade det som vist i eksemplet ovenfor.
Dette vil returnere en resultatliste over alle brugeroprettede tabeller. Da mængden af information, der returneres, når du forespørger i alle kolonner, er ret stor, vil du måske trimme resultaterne ved kun at se name
kolonnen og måske crdate
(oprettelsesdato):
SELECT
name,
crdate
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Angivelse af tabeller i SQL Server 2005 eller nyere
At angive alle tabellerne i SQL-serveren, når du bruger en nyere version (SQL 2005 eller nyere), er et spørgsmål om at forespørge INFORMATION_SCHEMA
visninger, som automatisk er indbygget i SQL Server. Disse giver dig mulighed for nemt at se en lang række metadata for denne særlige SQL Server-instans, inklusive oplysninger om COLUMNS
, ROUTINES
, og endda TABLES
.
Du bemærker muligvis, at der returneres fire kolonner, når du bruger INFORMATION_SCHEMA.TABLES
visning, men den vigtigste kolonne er TABLE_TYPE
, som bestemmer, om tabellen i den pågældende række er en faktisk tabel (BASE TABLE
) eller en visning (VIEW
).
For at returnere alle tabeller og visninger i én forespørgsel, skal du udføre følgende TSQL-sætning:
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES;
GO
Det kan også være klogt at angive den database, du ønsker at forespørge på:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES;
GO
Hvis du kun ønsker at hente faktiske tabeller og filtrere visninger fra resultaterne, skal du tilføje en WHERE TABLE_TYPE = 'BASE TABLE'
klausul:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES
WHERE
TABLE_TYPE = 'BASE TABLE';
GO