V SQL Server můžete použít sp_columns_ex
systémová uložená procedura k vrácení informací o sloupcích o sloupcích ze zadaného propojeného serveru.
Můžete zadat jednotlivý sloupec nebo můžete zadat všechny sloupce z dané databáze, tabulky atd.
Syntaxe
Syntaxe vypadá takto:
sp_columns_ex [ @table_server = ] 'table_server' [ , [ @table_name = ] 'table_name' ] [ , [ @table_schema = ] 'table_schema' ] [ , [ @table_catalog = ] 'table_catalog' ] [ , [ @column_name = ] 'column' ] [ , [ @ODBCVer = ] 'ODBCVer' ]
@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 většinu z nich pokrývají následující příklady. Další informace o těchto argumentech naleznete v dokumentaci společnosti Microsoft.
Příklad 1 – Vrácení konkrétního sloupce
Následující příklad vrací informace o konkrétním sloupci.
EXEC sp_columns_ex @table_server = 'Homer', @table_name = 'Artists', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'ArtistName';
Výsledek (při použití vertikálního výstupu):
TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | Artists COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39
V tomto případě je název serveru Homer
, název databáze je Music
, název tabulky je Artists
, schéma tabulky je dbo
a název sloupce je ArtistName
.
To lze také provést takto:
EXEC sp_columns_ex 'Homer', 'Artists', 'dbo', 'Music', 'ArtistName';
Příklad 2 – Určení pouze tabulky
V tomto příkladu uvádím pouze název tabulky.
EXEC sp_columns_ex @table_server = 'Homer', @table_name = 'Artists';
Tím se vrátí informace o všech sloupcích v Umělci stůl.
Příklad 3 – Zadejte název databáze a sloupce
V tomto příkladu specifikuji databázi a sloupec, ale ne tabulku.
EXEC sp_columns_ex @table_server = 'Homer', @table_catalog = 'Music', @column_name = 'ArtistName';
Výsledky (pomocí vertikálního výstupu):
-[ RECORD 1 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | Artists COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39 -[ RECORD 2 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | BluesAlbums COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39 -[ RECORD 3 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | JazzAlbums COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39 -[ RECORD 4 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | RockAlbums COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39
To vrátilo další tři sloupce. Ty jsou náhodou ze tří různých pohledů (databáze má tři pohledy s ArtistName
sloupec:BluesAlbums
, JazzAlbums
a RockAlbums
).
Příklad 4 – Zadejte pouze databázi
Zde uvádím pouze databázi:
EXEC sp_columns_ex @table_server = 'Homer', @table_catalog = 'Music';
Nebudu zde zobrazovat výsledky, protože to vrátilo téměř 6 000 řádků. Většina z nich byla z sys
schéma tabulky.
Příklad 5 – Zadání schématu tabulky
Následující příklad zužuje výsledky na konkrétní schéma tabulky (dbo
).
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo';
To vrátilo mnohem menší sadu výsledků než předchozí příklad. Je stále poměrně velký, takže jej zde nebudu zobrazovat.
Příklad 6 – Zástupné znaky
Můžete také použít zástupné znaky. Zde je příklad použití %
zástupný znak:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'Ar%';
Tím se vrátí všechny sloupce, které začínají Ar
. V mém případě to vrátilo dvě
ArtistId
sloupce a čtyři
Název interpreta
sloupce.
Mohl bych to zúžit:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'Ar%Name';
To vrátilo pouze Název interpreta sloupce.
Pokud však odstraním r
:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'A%Name';
Nyní dostanu čtyři další sloupce s názvem Název alba (stejně jako Jméno interpreta sloupce).