Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Връщане на информация за колона от свързан сървър в SQL Server (T-SQL примери)

В SQL Server можете да използвате sp_columns_ex системна съхранена процедура за връщане на информация за колоните за колоните от определен свързан сървър.

Можете да посочите отделна колона или да посочите всички колони от дадена база данни, таблица и т.н.

Синтаксис

Синтаксисът е така:

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 аргументът е единственият задължителен аргумент. Това е името на свързания сървър, от който искате информацията за таблицата.

Другите аргументи са незадължителни и аз обхващам повечето от тях в следващите примери. За повече информация относно тези аргументи вижте документацията на Microsoft.

Пример 1 – Връщане на конкретна колона

Следният пример връща информация за конкретна колона.

EXEC sp_columns_ex 
  @table_server = 'Homer',   
  @table_name = 'Artists',   
  @table_schema = 'dbo',   
  @table_catalog = 'Music',   
  @column_name = 'ArtistName';

Резултат (с помощта на вертикален изход):

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

В този случай името на сървъра е Homer , името на базата данни е Music , името на таблицата е Artists , схемата на таблицата е dbo и името на колоната е ArtistName .

Това може да се направи и по следния начин:

EXEC sp_columns_ex 
  'Homer',   
  'Artists',   
   'dbo',   
  'Music',   
  'ArtistName';

Пример 2 – Посочете само таблица

В този пример указвам само името на таблицата.

EXEC sp_columns_ex 
  @table_server = 'Homer',  
  @table_name = 'Artists';

Това връща информация за всички колони в Изпълнители маса.

Пример 3 – Посочете името на базата данни и колоната

В този пример посочвам базата данни и колоната, но не и таблицата.

EXEC sp_columns_ex 
  @table_server = 'Homer', 
  @table_catalog = 'Music',   
  @column_name = 'ArtistName';

Резултати (с помощта на вертикален изход):

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

Това върна още три колони. Те са от три различни изгледа (базата данни има три изгледа с ArtistName колона:BluesAlbums , JazzAlbums и RockAlbums ).

Пример 4 – Посочете само база данни

Тук посочвам само базата данни:

EXEC sp_columns_ex 
  @table_server = 'Homer', 
  @table_catalog = 'Music';

Няма да показвам резултатите тук, защото върна почти 6000 реда. Повечето от тях бяха от sys схема на таблицата.

Пример 5 – Посочете схема на таблица

Следният пример стеснява резултатите до конкретна схема на таблица (dbo ).

EXEC sp_columns_ex 
  @table_server = 'Homer',  
  @table_schema = 'dbo';

Това върна много по-малък набор от резултати от предишния пример. Все още е доста голям, така че няма да го показвам тук.

Пример 6 – заместващи знаци

Можете също да използвате заместващи знаци. Ето пример за използване на % заместващ знак:

EXEC sp_columns_ex 
  @table_server = 'Homer',  
  @table_schema = 'dbo',
  @table_catalog = 'Music',   
  @column_name = 'Ar%';

Това връща всички колони, които започват с Ar . В моя случай той върна два ArtistId колони и четири Име на изпълнител колони.

Мога да стесня това:

EXEC sp_columns_ex 
  @table_server = 'Homer',  
  @table_schema = 'dbo',
  @table_catalog = 'Music',   
  @column_name = 'Ar%Name';

Това върна само Име на изпълнител колони.

Въпреки това, ако премахна r :

EXEC sp_columns_ex 
  @table_server = 'Homer',  
  @table_schema = 'dbo',
  @table_catalog = 'Music',   
  @column_name = 'A%Name';

Сега получавам четири допълнителни колони, наречени AlbumName (както и Име на изпълнител колони).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 начина да получите езика на текущата сесия в SQL Server (T-SQL)

  2. Параметризираната заявка очаква параметъра, който не е бил предоставен

  3. 6 начина за конвертиране на низ в стойност на дата/час в SQL Server

  4. VMware CPU Hot Plug vNUMA Ефекти върху SQL Server

  5. Когато не е посочено „Поръчай по“, какъв ред избира заявката за вашия набор от записи?