sql >> Databáze >  >> RDS >> Sqlserver

Vrácení informací o sloupcích z propojeného serveru v SQL Server (příklady T-SQL)

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


  1. Udržování seskupeného běhu MAX (nebo MIN)

  2. JetShowPlan:Primer

  3. Seznam SELECT není v klauzuli GROUP BY a obsahuje neagregovaný sloupec .... nekompatibilní s sql_mode=only_full_group_by

  4. Nakonfigurujte režim spánku tak, aby jako primární klíč používal SYS_GUID() společnosti Oracle