sql >> Databáze >  >> RDS >> Sqlserver

Vrácení seznamu tabulek z propojeného serveru v SQL Server (příklady T-SQL)

V SQL Server můžete použít sp_tables_ex systémová uložená procedura pro vrácení informací o tabulkách ze zadaného propojeného serveru.

Nejjednodušším způsobem provedení této uložené procedury je předání názvu propojeného serveru. Tím se vrátí všechny tabulky z výchozí databáze na zadaném propojeném serveru, včetně systémových tabulek a pohledů. To by mohl být velký seznam.

Máte také možnost zadat jinou databázi a/nebo konkrétní schéma tabulky. Výsledky můžete také filtrovat podle typu tabulky (např. tabulka, pohled, systémová tabulka atd.).

Syntaxe

Syntaxe vypadá takto:

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 je jediný požadovaný argument. Toto je název propojeného serveru, ze kterého chcete informace o tabulce.

Ostatní argumenty jsou volitelné a budu je pokrývat v následujících příkladech. Další informace o těchto argumentech naleznete v dokumentaci společnosti Microsoft.

Příklad 1 – Vrátit všechny tabulky

Následující příklad vrátí všechny tabulky, pohledy, systémové tabulky, aliasy atd. z výchozí databáze na propojeném serveru s názvem Homer.

EXEC sp_tables_ex 'Homer';

To vrátí stovky řádků v mém systému, takže v tomto příkladu nebudu uvádět výsledky. Mějte na paměti, že většina těchto řádků jsou systémové tabulky a systémové pohledy.

To lze také provést takto:

EXEC sp_tables_ex @table_server = 'Homer';

Příklad 2 – Určení jiné databáze

Následující příklad uvádí, že WideWorldImportersDW by měla být použita databáze.

EXEC sp_tables_ex 
  @table_server = 'Homer',   
  @table_catalog = 'WideWorldImportersDW';

Opět to vrátí stovky řádků, takže nebudu uvádět výsledky.

Příklad 3 – Vrácení konkrétní tabulky

V tomto příkladu vracím informace o konkrétní tabulce.

EXEC sp_tables_ex 
  @table_server = 'Homer', 
  @table_catalog = 'Music',
  @table_name = 'Artists';

Výsledky:

+-------------+---------------+--------------+--------------+-----------+
| TABLE_CAT   | TABLE_SCHEM   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|-------------+---------------+--------------+--------------+-----------|
| Music       | dbo           | Artists      | TABLE        | NULL      |
+-------------+---------------+--------------+--------------+-----------+

Příklad 4 – Pouze návratová zobrazení

V tomto příkladu specifikuji, že by měla být vrácena pouze zobrazení.

EXEC sp_tables_ex 
  @table_server = 'Homer', 
  @table_catalog = 'Music',
  @table_type = 'VIEW';

Výsledky:

+-------------+---------------+--------------+--------------+-----------+
| TABLE_CAT   | TABLE_SCHEM   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|-------------+---------------+--------------+--------------+-----------|
| Music       | dbo           | BluesAlbums  | VIEW         | NULL      |
| Music       | dbo           | JazzAlbums   | VIEW         | NULL      |
| Music       | dbo           | RockAlbums   | VIEW         | NULL      |
+-------------+---------------+--------------+--------------+-----------+

Všimněte si, že tyto nezahrnují systémová zobrazení. Pokud bych chtěl vrátit systémová zobrazení, použil bych @table_type = 'SYSTEM VIEW' (a výsledná sada by byla mnohem větší).

@table_type argument přijímá následující typy:ALIAS , GLOBAL TEMPORARY , LOCAL TEMPORARY , SYNONYM , SYSTEM TABLE , SYSTEM VIEW , TABLE a VIEW .

Příklad 5 – Zadání schématu tabulky

Následující příklad zúží výsledky na konkrétní schéma tabulky (Dimension ) v rámci WideWorldImportersDW databáze.

EXEC sp_tables_ex 
  @table_server = 'Homer',   
  @table_catalog = 'WideWorldImportersDW',   
  @table_schema = 'Dimension';

Výsledky:

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

Příklad 6 – Zástupné znaky

@fUsePattern argument umožňuje určit, zda % nebo ne , _ , [ a ] znaky jsou interpretovány jako zástupné znaky.

Výchozí hodnota je 1 , což znamená, že jsou interpretovány jako zástupné znaky. Můžete zadat 0 upřesnit, že by neměli být interpretovány jako zástupné znaky.

Zde je příklad použití zástupného znaku:

EXEC sp_tables_ex 
  @table_server = 'Homer', 
  @table_catalog = 'WideWorldImportersDW',
  @table_name = 'C%',
  @table_type = 'TABLE',
  @fUsePattern = 1;

Výsledky:

+----------------------+---------------+------------------+--------------+-----------+
| 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 co se stane, pokud neurčím žádné zástupné znaky:

EXEC sp_tables_ex 
  @table_server = 'Homer', 
  @table_catalog = 'WideWorldImportersDW',
  @table_name = 'C%',
  @table_type = 'TABLE',
  @fUsePattern = 0;

Výsledky:

(0 rows affected)
Time: 0.324s

  1. Jak získat data z minulého týdne v MySQL

  2. PostgreSQL:jak nainstalovat rozšíření plpythonu

  3. PostgreSQL kontrolní omezení pro podmínku cizího klíče

  4. Práce na Postgres-XL 9.5