sql >> Database >  >> RDS >> Sqlserver

Een lijst met tabellen retourneren van een gekoppelde server in SQL Server (T-SQL-voorbeelden)

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

  1. Gebruikerswachtwoord wijzigen in PostgreSQL

  2. Wat is de reden / het nut om het ENABLE-sleutelwoord te gebruiken in Oracle-database-instructies?

  3. Hoe krijg ik een lijst met kolomnamen en datatypes van een tabel in PostgreSQL?

  4. Hoe maak je een veilige mysql voorbereide verklaring in php?