sql >> Database teknologi >  >> RDS >> Sqlserver

Returner en liste over tabeller fra en sammenkædet server i SQL Server (T-SQL-eksempler)

I SQL Server kan du bruge sp_tables_ex systemlagret procedure for at returnere tabeloplysninger om tabellerne fra en specificeret forbundet server.

Den enkleste måde at udføre denne lagrede procedure på er at videregive navnet på den sammenkædede server. Hvis du gør det, returneres alle tabeller fra standarddatabasen på den angivne sammenkædede server, inklusive systemtabeller og visninger. Dette kunne være en stor liste.

Du har også mulighed for at angive en anden database og/eller et specifikt tabelskema. Du kan også filtrere resultaterne baseret på tabeltypen (f.eks. tabel, visning, systemtabel osv.).

Syntaks

Syntaksen ser sådan ud:

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 er det eneste nødvendige argument. Dette er navnet på den sammenkædede server, som du vil have tabeloplysningerne fra.

De andre argumenter er valgfrie, og jeg dækker dem i de følgende eksempler. For mere information om disse argumenter, se Microsoft-dokumentationen.

Eksempel 1 – Returner alle tabeller

Følgende eksempel returnerer alle tabeller, visninger, systemtabeller, aliaser osv. fra standarddatabasen på den sammenkædede server kaldet Homer.

EXEC sp_tables_ex 'Homer';

Dette returnerer hundredvis af rækker på mit system, så jeg vil ikke liste resultaterne i dette eksempel. Husk, at de fleste af disse rækker er systemtabeller og systemvisninger.

Dette kunne også gøres sådan her:

EXEC sp_tables_ex @table_server = 'Homer';

Eksempel 2 – Angiv en anden database

Følgende eksempel specificerer, at WideWorldImportersDW databasen skal bruges.

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

Igen, dette returnerer hundredvis af rækker, så jeg vil ikke liste resultaterne.

Eksempel 3 – Returner en specifik tabel

I dette eksempel returnerer jeg oplysninger om en specifik tabel.

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

Resultater:

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

Eksempel 4 – Kun returvisninger

I dette eksempel angiver jeg, at kun visninger skal returneres.

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

Resultater:

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

Bemærk, at disse ikke inkluderer systemvisninger. Hvis jeg ville returnere systemvisninger, ville jeg have brugt @table_type = 'SYSTEM VIEW' (og resultatet ville være meget større).

@table_type argument accepterer følgende typer:ALIAS , GLOBAL TEMPORARY , LOCAL TEMPORARY , SYNONYM , SYSTEM TABLE , SYSTEM VIEW , TABLE og VIEW .

Eksempel 5 – Angiv et tabelskema

Følgende eksempel indsnævrer resultaterne til et specifikt tabelskema (Dimension ) i WideWorldImportersDW database.

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

Resultater:

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

Eksempel 6 – Jokertegn

@fUsePattern argument giver dig mulighed for at angive, om % eller ej , _ , [ og ] tegn tolkes som jokertegn.

Standardværdien er 1 , hvilket betyder, at de er tolkes som jokertegn. Du kan angive 0 for at angive, at de ikke skal tolkes som jokertegn.

Her er et eksempel på brug af et jokertegn:

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

Resultater:

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

Og her er, hvad der sker, hvis jeg ikke angiver nogen jokertegn:

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

Resultater:

(0 rows affected)
Time: 0.324s

  1. Forstå Lock Granularity i MySQL

  2. SQL Between-sætning med strenge kolonner

  3. Anskaffelse og installation af Microsoft SQL Server Management Studio

  4. Sådan bruger du GROUP_CONCAT i en CONCAT i MySQL