W SQL Server możesz użyć sp_columns_ex
systemowa procedura składowana w celu zwrócenia informacji o kolumnach z określonego serwera połączonego.
Możesz określić pojedynczą kolumnę lub możesz określić wszystkie kolumny z danej bazy danych, tabeli itp.
Składnia
Składnia wygląda tak:
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 jest jedynym wymaganym argumentem. To jest nazwa połączonego serwera, z którego chcesz uzyskać informacje o tabeli.
Pozostałe argumenty są opcjonalne i większość z nich opisuję w poniższych przykładach. Więcej informacji na temat tych argumentów można znaleźć w dokumentacji firmy Microsoft.
Przykład 1 – Zwróć konkretną kolumnę
Poniższy przykład zwraca informacje o określonej kolumnie.
EXEC sp_columns_ex @table_server = 'Homer', @table_name = 'Artists', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'ArtistName';
Wynik (przy użyciu wyjścia pionowego):
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
W tym przypadku nazwa serwera to Homer
, nazwa bazy danych to Music
, nazwa tabeli to Artists
, schemat tabeli to dbo
a nazwa kolumny to ArtistName
.
Można to również zrobić w ten sposób:
EXEC sp_columns_ex 'Homer', 'Artists', 'dbo', 'Music', 'ArtistName';
Przykład 2 – Określ tylko tabelę
W tym przykładzie podaję tylko nazwę tabeli.
EXEC sp_columns_ex @table_server = 'Homer', @table_name = 'Artists';
Zwraca to informacje o wszystkich kolumnach w Wykonawcach stół.
Przykład 3 – Określ nazwę bazy danych i kolumny
W tym przykładzie określam bazę danych i kolumnę, ale nie tabelę.
EXEC sp_columns_ex @table_server = 'Homer', @table_catalog = 'Music', @column_name = 'ArtistName';
Wyniki (przy użyciu wyjścia pionowego):
-[ 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 zwróciło trzy kolejne kolumny. Pochodzą one z trzech różnych widoków (baza danych ma trzy widoki z ArtistName
kolumna:BluesAlbums
, JazzAlbums
i RockAlbums
).
Przykład 4 – Określ tylko bazę danych
Tutaj określam tylko bazę danych:
EXEC sp_columns_ex @table_server = 'Homer', @table_catalog = 'Music';
Nie będę wyświetlać wyników tutaj, ponieważ zwróciło prawie 6000 wierszy. Większość z nich pochodziła z sys
schemat tabeli.
Przykład 5 – Określ schemat tabeli
Poniższy przykład zawęża wyniki do określonego schematu tabeli (dbo
).
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo';
Zwróciło to znacznie mniejszy zestaw wyników niż w poprzednim przykładzie. Nadal jest dość duży, więc nie będę go tutaj wyświetlać.
Przykład 6 – Znaki wieloznaczne
Możesz także użyć symboli wieloznacznych. Oto przykład użycia %
znak wieloznaczny:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'Ar%';
Zwraca wszystkie kolumny zaczynające się od Ar
. W moim przypadku zwrócił dwa
ArtistId
kolumny i cztery
ArtistName
kolumny.
Mogę to zawęzić:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'Ar%Name';
To zwróciło tylko ArtistName kolumny.
Jeśli jednak usunę r
:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'A%Name';
Dostaję teraz cztery dodatkowe kolumny o nazwie AlbumName (jak również ArtistName kolumny).