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