V závislosti na verzi serveru SQL, kterou používáte, se způsob dotazování a vracení seznamu všech tabulek vytvořených uživatelem může mírně lišit. Níže stručně prozkoumáme příkazy TSQL, které lze použít k načtení seznamu tabulek pro starší SQL Server 2000 i novější verzi 2005 nebo novější.
Výpis tabulek v SQL Server 2000
U starších verzí SQL Server (jako je SQL Server 2000, ačkoli tato metoda je kvůli zpětné kompatibilitě podporována také v SQL Server 2005), budete muset zadat dotaz na SYS.SYSOBJECTS
zobrazení metadat. SYS.SYSOBJECTS
obsahuje řádek pro každý objekt, který byl vytvořen v databázi, včetně stored procedures
, views
a user tables
(které je důležité odlišit od system tables
.)
SYSOBJECTS
tabulka obsahuje několik tuctů sloupců dat, protože musí obsahovat informace o prakticky všem, co se časem přidá na server. Chcete-li tedy najít seznam tabulek vytvořených uživatelem (a tedy ignorovat system tables
), budeme muset najít výsledky, kde je xtype
sloupec (který určuje object type
pro tento řádek) se rovná hodnotě U
, což znamená user table
. Výsledný TSQL příkaz by měl vypadat takto:
SELECT
*
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Poznámka:Od SYSOBJECTS
jsou součástí SYS
jmenný prostor při dotazování SYSOBJECTS
není nutné specifikovat, že SYSOBJECTS
je součástí globálního SYS
jmenný prostor, takže jej můžeme vynechat, jak je ukázáno v příkladu výše.
Tím se vrátí seznam výsledků všech tabulek vytvořených uživatelem. Protože množství informací vrácených při dotazování na všechny sloupce je poměrně velké, možná budete chtít zkrátit výsledky zobrazením pouze name
a možná i crdate
(datum vytvoření):
SELECT
name,
crdate
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Výpis tabulek v SQL Server 2005 nebo novějším
Výpis všech tabulek na serveru SQL při použití novější verze (SQL 2005 nebo vyšší) je otázkou dotazu na INFORMATION_SCHEMA
pohledy, které jsou automaticky integrovány do SQL Serveru. Ty vám umožňují snadno zobrazit širokou škálu metadat pro tuto konkrétní instanci SQL Server, včetně informací o COLUMNS
, ROUTINES
a dokonce TABLES
.
Můžete si všimnout, že při použití INFORMATION_SCHEMA.TABLES
jsou vráceny čtyři sloupce zobrazit, ale nejdůležitější sloupec je TABLE_TYPE
, která určuje, zda tabulka v tomto řádku je skutečnou tabulkou (BASE TABLE
) nebo zobrazení (VIEW
).
Chcete-li vrátit všechny tabulky a zobrazení v jednom dotazu, proveďte následující příkaz TSQL:
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES;
GO
Může být také rozumné zadat databázi, kterou chcete dotazovat:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES;
GO
Pokud chcete načíst pouze skutečné tabulky a odfiltrovat zobrazení z výsledků, přidejte WHERE TABLE_TYPE = 'BASE TABLE'
klauzule:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES
WHERE
TABLE_TYPE = 'BASE TABLE';
GO