Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Връщане на списък с таблици от свързан сървър в SQL Server (T-SQL примери)

В SQL Server можете да използвате sp_tables_ex системна съхранена процедура за връщане на информация за таблицата за таблиците от определен свързан сървър.

Най-простият начин да изпълните тази съхранена процедура е да предадете името на свързания сървър. Това ще върне всички таблици от базата данни по подразбиране на посочения свързан сървър, включително системни таблици и изгледи. Това може да е голям списък.

Също така имате възможност да посочите различна база данни и/или конкретна схема на таблица. Можете също да филтрирате резултатите въз основа на типа таблица (напр. таблица, изглед, системна таблица и т.н.).

Синтаксис

Синтаксисът е така:

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 аргументът е единственият задължителен аргумент. Това е името на свързания сървър, от който искате информацията за таблицата.

Другите аргументи са незадължителни и ги обхващам в следващите примери. За повече информация относно тези аргументи вижте документацията на Microsoft.

Пример 1 – Връщане на всички таблици

Следният пример връща всички таблици, изгледи, системни таблици, псевдоними и т.н. от базата данни по подразбиране на свързания сървър, наречен Homer.

EXEC sp_tables_ex 'Homer';

Това връща стотици редове в моята система, така че няма да изброявам резултатите в този пример. Имайте предвид, че повечето от тези редове са системни таблици и системни изгледи.

Това може да се направи и по следния начин:

EXEC sp_tables_ex @table_server = 'Homer';

Пример 2 – Посочете различна база данни

Следният пример указва, че WideWorldImportersDW база данни трябва да се използва.

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

Отново, това връща стотици редове, така че няма да изброявам резултатите.

Пример 3 – Връщане на конкретна таблица

В този пример връщам информация за конкретна таблица.

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

Резултати:

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

Пример 4 – Само връщане на изгледи

В този пример уточнявам, че трябва да се връщат само изгледи.

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

Резултати:

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

Имайте предвид, че те не включват системни изгледи. Ако исках да върна системни изгледи, щях да използвам @table_type = 'SYSTEM VIEW' (и резултатният набор би бил много по-голям).

@table_type аргументът приема следните типове:ALIAS , GLOBAL TEMPORARY , LOCAL TEMPORARY , SYNONYM , SYSTEM TABLE , SYSTEM VIEW , TABLE и VIEW .

Пример 5 – Посочете схема на таблица

Следният пример стеснява резултатите до конкретна схема на таблица (Dimension ) в WideWorldImportersDW база данни.

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

Резултати:

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

Пример 6 – заместващи знаци

@fUsePattern аргумент ви позволява да укажете дали % , _ , [ и ] знаците се интерпретират като заместващи знаци.

Стойността по подразбиране е 1 , което означава, че те са интерпретирани като заместващи знаци. Можете да посочите 0 за да уточните, че не да се тълкува като заместващи знаци.

Ето пример за използване на заместващ знак:

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

Резултати:

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

И ето какво се случва, ако не задам никакви заместващи знаци:

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

Резултати:

(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. Не може да се разреши конфликтът на съпоставяне между SQL_Latin1_General_CP1_CI_AS и Latin1_General_CI_AS в операция равна на

  2. SQL Server Log Shipping &Disaster Recovery Installation and Configuration -2

  3. Статистика за входа на файл за производителност на SQL Server

  4. Тенденции през 2020 г., за които DBA трябва да са наясно

  5. Предимства от използването на нотация на SQL редна позиция?