W zależności od używanej wersji programu SQL Server metoda wykonywania zapytań i zwracania listy wszystkich tabel utworzonych przez użytkowników może się nieznacznie różnić. Poniżej krótko przeanalizujemy instrukcje TSQL, których można użyć do pobrania listy tabel zarówno dla starszego SQL Server 2000, jak i nowszej wersji 2005 lub nowszej.
Lista tabel w SQL Server 2000
W przypadku starszych wersji SQL Server (takich jak SQL Server 2000, chociaż ta metoda jest również obsługiwana w SQL Server 2005 w celu zapewnienia zgodności wstecznej), konieczne będzie zapytanie o SYS.SYSOBJECTS
widok metadanych. SYS.SYSOBJECTS
zawiera wiersz dla każdego obiektu, który został utworzony w bazie danych, w tym stored procedures
, views
i user tables
(które są ważne do odróżnienia od system tables
.)
SYSOBJECTS
tabela zawiera kilkadziesiąt kolumn danych, ponieważ musi zawierać informacje o praktycznie wszystkich dodanych do serwera w czasie. Dlatego, aby znaleźć listę tabel utworzonych przez użytkowników (w ten sposób ignorując system tables
), musimy znaleźć wyniki, w których xtype
kolumna (która określa object type
dla tego wiersza) jest równa wartości U
, co oznacza user table
. Wynikowa instrukcja TSQL powinna wyglądać tak:
SELECT
*
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Uwaga:od SYSOBJECTS
są częścią SYS
przestrzeń nazw, podczas zapytania SYSOBJECTS
nie trzeba określać, że SYSOBJECTS
jest częścią globalnego SYS
przestrzeń nazw, więc możemy ją pominąć, jak pokazano w powyższym przykładzie.
Spowoduje to zwrócenie listy wyników wszystkich tabel utworzonych przez użytkownika. Ponieważ ilość informacji zwracanych podczas odpytywania wszystkich kolumn jest dość duża, możesz chcieć przyciąć wyniki, wyświetlając tylko name
kolumna i być może crdate
(data powstania):
SELECT
name,
crdate
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Listing tabel w programie SQL Server 2005 lub nowszym
Wyświetlenie wszystkich tabel na serwerze SQL w przypadku korzystania z nowszej wersji (SQL 2005 lub nowszej) jest kwestią zapytania INFORMATION_SCHEMA
widoki, które są automatycznie wbudowane w SQL Server. Umożliwiają one łatwe przeglądanie szerokiej gamy metadanych dla tej konkretnej instancji SQL Server, w tym informacji o COLUMNS
, ROUTINES
, a nawet TABLES
.
Możesz zauważyć, że podczas korzystania z INFORMATION_SCHEMA.TABLES
zwracane są cztery kolumny widok, ale najważniejszą kolumną jest TABLE_TYPE
, który określa, czy tabela w tym wierszu jest rzeczywistą tabelą (BASE TABLE
) lub widok (VIEW
).
Aby zwrócić wszystkie tabele i widoków w jednym zapytaniu, wykonaj następującą instrukcję TSQL:
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES;
GO
Rozsądne może być również określenie bazy danych, do której chcesz wysłać zapytanie:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES;
GO
Jeśli chcesz tylko pobrać rzeczywiste tabele i odfiltrować widoki z wyników, dodaj WHERE TABLE_TYPE = 'BASE TABLE'
klauzula:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES
WHERE
TABLE_TYPE = 'BASE TABLE';
GO