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