sql >> Database teknologi >  >> RDS >> Sqlserver

Returner kolonneoplysninger fra en sammenkædet server i SQL Server (T-SQL-eksempler)

I SQL Server kan du bruge sp_columns_ex systemlagret procedure for at returnere kolonneinformation om kolonnerne fra en specificeret forbundet server.

Du kan angive en individuel kolonne, eller du kan angive alle kolonner fra en given database, tabel osv.

Syntaks

Syntaksen ser sådan ud:

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 er det eneste nødvendige argument. Dette er navnet på den sammenkædede server, som du vil have tabeloplysningerne fra.

De andre argumenter er valgfrie, og jeg dækker de fleste af dem i de følgende eksempler. For mere information om disse argumenter, se Microsoft-dokumentationen.

Eksempel 1 – Returner en specifik kolonne

Følgende eksempel returnerer oplysninger om en bestemt kolonne.

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

Resultat (ved hjælp af lodret output):

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

I dette tilfælde er servernavnet Homer , databasenavnet er Music , tabellens navn er Artists , tabelskemaet er dbo og kolonnenavnet er ArtistName .

Dette kunne også gøres sådan her:

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

Eksempel 2 – Angiv kun en tabel

I dette eksempel angiver jeg kun tabelnavnet.

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

Dette returnerer oplysninger om alle kolonner i Kunstnere bord.

Eksempel 3 – Angiv database- og kolonnenavnet

I dette eksempel angiver jeg databasen og kolonnen, men ikke tabellen.

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

Resultater (ved hjælp af lodret output):

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

Dette gav tre kolonner mere. Disse kommer tilfældigvis fra tre forskellige visninger (databasen har tre visninger med et ArtistName kolonne:BluesAlbums , JazzAlbums og RockAlbums ).

Eksempel 4 – Angiv kun en database

Her angiver jeg kun databasen:

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

Jeg vil ikke vise resultaterne her, fordi det returnerede næsten 6.000 rækker. De fleste af disse var fra sys tabelskema.

Eksempel 5 – Angiv et tabelskema

Følgende eksempel indsnævrer resultaterne til et specifikt tabelskema (dbo ).

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

Dette gav et meget mindre resultatsæt end det forrige eksempel. Den er stadig ret stor, så jeg viser den ikke her.

Eksempel 6 – Jokertegn

Du kan også bruge jokertegn. Her er et eksempel på brug af % jokertegn:

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

Dette returnerer alle kolonner, der begynder med Ar . I mit tilfælde returnerede det to ArtistId kolonner og fire ArtistName kolonner.

Jeg kunne indsnævre dette:

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

Dette returnerede kun ArtistName kolonner.

Men hvis jeg fjerner r :

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

Jeg får nu fire ekstra kolonner kaldet AlbumName (samt ArtistName kolonner).


  1. Sådan aktiverer du massetilladelse i SQL Server

  2. Hvordan kan jeg lave en UPDATE-sætning med JOIN i SQL Server?

  3. SQL Server:brug parameter i CREATE DATABASE

  4. Hvad kræver dette JavaScript?