В 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