Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zwróć listę tabel z połączonego serwera w SQL Server (przykłady T-SQL)

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 ​​ 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest najdłuższy możliwy numer telefonu na świecie, który powinienem wziąć pod uwagę w SQL varchar (długość) dla telefonu?

  2. Jak ustawić opcję maxrecursion dla CTE wewnątrz funkcji Table-Valued-Function?

  3. Jak używać sortowania (Order By) w instrukcji Select w SQL Server — samouczek SQL Server / TSQL, część 109

  4. Sprawdź, czy obiekt jest procedurą składowaną, używając OBJECTPROPERTY() w SQL Server

  5. Nie używaj sp_depends w SQL Server (jest przestarzałe)