In SQL Server kunt u de sp_tables_ex
. gebruiken systeem opgeslagen procedure om tabelinformatie over de tabellen van een gespecificeerde gekoppelde server te retourneren.
De eenvoudigste manier om deze opgeslagen procedure uit te voeren, is door de naam van de gekoppelde server door te geven. Als u dat doet, worden alle tabellen uit de standaarddatabase op de opgegeven gekoppelde server geretourneerd, inclusief systeemtabellen en weergaven. Dit kan een grote lijst zijn.
U heeft ook de mogelijkheid om een andere database en/of een specifiek tabelschema op te geven. U kunt de resultaten ook filteren op basis van het tabeltype (bijv. tabel, weergave, systeemtabel, enz.).
Syntaxis
De syntaxis gaat als volgt:
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' ]
De @table_server
argument is het enige vereiste argument. Dit is de naam van de gekoppelde server waarvan u de tabelinformatie wilt hebben.
De andere argumenten zijn optioneel en ik behandel ze in de volgende voorbeelden. Zie de Microsoft-documentatie voor meer informatie over deze argumenten.
Voorbeeld 1 – Alle tabellen retourneren
Het volgende voorbeeld retourneert alle tabellen, weergaven, systeemtabellen, aliassen, enz. van de standaarddatabase op de gekoppelde server met de naam Homer.
EXEC sp_tables_ex 'Homer';
Dit retourneert honderden rijen op mijn systeem, dus ik zal de resultaten in dit voorbeeld niet vermelden. Houd er rekening mee dat de meeste van die rijen systeemtabellen en systeemweergaven zijn.
Dit kan ook als volgt worden gedaan:
EXEC sp_tables_ex @table_server = 'Homer';
Voorbeeld 2 – Specificeer een andere database
Het volgende voorbeeld geeft aan dat de WideWorldImportersDW
database moet worden gebruikt.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW';
Nogmaals, dit levert honderden rijen op, dus ik zal de resultaten niet vermelden.
Voorbeeld 3 – Een specifieke tabel retourneren
In dit voorbeeld retourneer ik informatie over een specifieke tabel.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'Music', @table_name = 'Artists';
Resultaten:
+-------------+---------------+--------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------+---------------+--------------+--------------+-----------| | Music | dbo | Artists | TABLE | NULL | +-------------+---------------+--------------+--------------+-----------+
Voorbeeld 4 – Alleen retourweergaven
In dit voorbeeld geef ik aan dat alleen views moeten worden geretourneerd.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'Music', @table_type = 'VIEW';
Resultaten:
+-------------+---------------+--------------+--------------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------+---------------+--------------+--------------+-----------+
Houd er rekening mee dat deze geen systeemweergaven bevatten. Als ik systeemweergaven had willen retourneren, had ik @table_type = 'SYSTEM VIEW'
gebruikt (en de resultatenset zou veel groter zijn).
De @table_type
argument accepteert de volgende typen:ALIAS
, GLOBAL TEMPORARY
, LOCAL TEMPORARY
, SYNONYM
, SYSTEM TABLE
, SYSTEM VIEW
, TABLE
, en VIEW
.
Voorbeeld 5 – Specificeer een tabelschema
In het volgende voorbeeld worden de resultaten beperkt tot een specifiek tabelschema (Dimension
) binnen de WideWorldImportersDW
database.
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_schema = 'Dimension';
Resultaten:
+----------------------+---------------+------------------+--------------+-----------+ | 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 | +----------------------+---------------+------------------+--------------+-----------+
Voorbeeld 6 – Jokertekens
De @fUsePattern
argument stelt u in staat om te specificeren of de %
, _
, [
, en ]
tekens worden geïnterpreteerd als jokertekens.
De standaardwaarde is 1
, wat betekent dat ze zijn geïnterpreteerd als jokertekens. U kunt 0
. specificeren om aan te geven dat ze niet . mogen worden geïnterpreteerd als jokertekens.
Hier is een voorbeeld van het gebruik van een jokerteken:
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_name = 'C%', @table_type = 'TABLE', @fUsePattern = 1;
Resultaten:
+----------------------+---------------+------------------+--------------+-----------+ | 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 | +----------------------+---------------+------------------+--------------+-----------+
En dit is wat er gebeurt als ik geen jokertekens opgeef:
EXEC sp_tables_ex @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW', @table_name = 'C%', @table_type = 'TABLE', @fUsePattern = 0;
Resultaten:
(0 rows affected) Time: 0.324s