Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zwróć informacje o kolumnie z serwera połączonego w programie SQL Server (przykłady T-SQL)

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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zmienić nazwę bazy danych SQL Server za pomocą T-SQL

  2. jak zadeklarować zmienną globalną w SQL Server..?

  3. Jak zainstalować SQL Server

  4. Pełna tabela transpozycji SQL

  5. In-Memory OLTP:Co nowego w SQL Server 2016