W SQL Server możesz użyć sp_tables_ex
systemowa procedura składowana w celu zwrócenia informacji o tabelach dotyczących tabel z określonego serwera połączonego.
Najprostszym sposobem wykonania tej procedury składowanej jest przekazanie nazwy serwera połączonego. Spowoduje to zwrócenie wszystkich tabel z domyślnej bazy danych na określonym serwerze połączonym, w tym tabel i widoków systemowych. To może być długa lista.
Masz również możliwość określenia innej bazy danych i/lub określonego schematu tabeli. Możesz także filtrować wyniki na podstawie typu tabeli (np. tabela, widok, tabela systemowa itp.).
Składnia
Składnia wygląda tak:
sp_tables_ex [ @table_server = ] 'table_server' [ , [ @table_name = ] 'table_name' ] [ , [ @table_schema = ] 'table_schema' ] [ , [ @table_catalog = ] 'table_catalog' ] [ , [ @table_type = ] 'table_type' ] [ , [@fUsePattern = ] 'fUsePattern' ]
@table_server
argument jest jedynym wymaganym argumentem. To jest nazwa połączonego serwera, z którego chcesz uzyskać informacje o tabeli.
Pozostałe argumenty są opcjonalne i opisuję je w poniższych przykładach. Więcej informacji na temat tych argumentów można znaleźć w dokumentacji firmy Microsoft.
Przykład 1 – Zwróć wszystkie tabele
Poniższy przykład zwraca wszystkie tabele, widoki, tabele systemowe, aliasy itp. z domyślnej bazy danych na połączonym serwerze o nazwie Homer.
EXEC sp_tables_ex 'Homer';
Zwraca to setki wierszy w moim systemie, więc nie wymienię wyników w tym przykładzie. Pamiętaj, że większość z tych wierszy to tabele systemowe i widoki systemowe.
Można to również zrobić w ten sposób:
EXEC sp_tables_ex @table_server = 'Homer';
Przykład 2 – Określ inną bazę danych
Poniższy przykład określa, że WideWorldImportersDW
należy użyć bazy danych.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW';
Ponownie, zwraca to setki wierszy, więc nie będę wymieniać wyników.
Przykład 3 – Zwróć określoną tabelę
W tym przykładzie zwracam informacje o określonej tabeli.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'Music', @table_name = 'Artists';
Wyniki:
+-------------+---------------+--------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------+---------------+--------------+--------------+-----------| | Music | dbo | Artists | TABLE | NULL | +-------------+---------------+--------------+--------------+-----------+
Przykład 4 – Tylko zwrócone wyświetlenia
W tym przykładzie określam, że powinny być zwracane tylko widoki.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'Music', @table_type = 'VIEW';
Wyniki:
+-------------+---------------+--------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------+---------------+--------------+--------------+-----------+
Pamiętaj, że nie obejmują one widoków systemowych. Gdybym chciał zwrócić widoki systemowe, użyłbym @table_type = 'SYSTEM VIEW'
(a zestaw wyników byłby znacznie większy).
@table_type
argument akceptuje następujące typy:ALIAS
, GLOBAL TEMPORARY
, LOCAL TEMPORARY
, SYNONYM
, SYSTEM TABLE
, SYSTEM VIEW
, TABLE
i VIEW
.
Przykład 5 – Określ schemat tabeli
Poniższy przykład zawęża wyniki do określonego schematu tabeli (Dimension
) w WideWorldImportersDW
baza danych.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_schema = 'Dimension';
Wyniki:
+----------------------+---------------+------------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |----------------------+---------------+------------------+--------------+-----------| | WideWorldImportersDW | Dimension | City | TABLE | NULL | | WideWorldImportersDW | Dimension | Customer | TABLE | NULL | | WideWorldImportersDW | Dimension | Date | TABLE | NULL | | WideWorldImportersDW | Dimension | Employee | TABLE | NULL | | WideWorldImportersDW | Dimension | Payment Method | TABLE | NULL | | WideWorldImportersDW | Dimension | Stock Item | TABLE | NULL | | WideWorldImportersDW | Dimension | Supplier | TABLE | NULL | | WideWorldImportersDW | Dimension | Transaction Type | TABLE | NULL | +----------------------+---------------+------------------+--------------+-----------+
Przykład 6 – Znaki wieloznaczne
@fUsePattern
argument pozwala określić, czy %
, _
, [
i ]
znaki są interpretowane jako symbole wieloznaczne.
Domyślna wartość to 1
, co oznacza, że są interpretowane jako symbole wieloznaczne. Możesz określić 0
aby określić, że nie być interpretowane jako symbole wieloznaczne.
Oto przykład użycia znaku wieloznacznego:
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_name = 'C%', @table_type = 'TABLE', @fUsePattern = 1;
Wyniki:
+----------------------+---------------+------------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |----------------------+---------------+------------------+--------------+-----------| | WideWorldImportersDW | Dimension | City | TABLE | NULL | | WideWorldImportersDW | Dimension | Customer | TABLE | NULL | | WideWorldImportersDW | Integration | City_Staging | TABLE | NULL | | WideWorldImportersDW | Integration | Customer_Staging | TABLE | NULL | +----------------------+---------------+------------------+--------------+-----------+
A oto, co się stanie, jeśli nie określę symboli wieloznacznych:
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_name = 'C%', @table_type = 'TABLE', @fUsePattern = 0;
Wyniki:
(0 rows affected) Time: 0.324s