Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kembalikan Informasi Kolom dari Server Tertaut di SQL Server (Contoh T-SQL)

Di SQL Server Anda dapat menggunakan sp_columns_ex prosedur tersimpan sistem untuk mengembalikan informasi kolom tentang kolom dari server tertaut yang ditentukan.

Anda dapat menentukan kolom individual, atau Anda dapat menentukan semua kolom dari database, tabel, dll.

Sintaks

Sintaksnya seperti ini:

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 argumen adalah satu-satunya argumen yang diperlukan. Ini adalah nama server tertaut yang Anda inginkan informasi tabelnya.

Argumen lainnya adalah opsional, dan saya membahas sebagian besar dari mereka dalam contoh berikut. Untuk informasi selengkapnya tentang argumen ini, lihat dokumentasi Microsoft.

Contoh 1 – Mengembalikan Kolom Tertentu

Contoh berikut mengembalikan informasi tentang kolom tertentu.

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

Hasil (menggunakan keluaran vertikal):

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

Dalam hal ini, nama servernya adalah Homer , nama databasenya adalah Music , nama tabelnya adalah Artists , skema tabelnya adalah dbo dan nama kolomnya adalah ArtistName .

Ini juga bisa dilakukan seperti ini:

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

Contoh 2 – Tentukan Tabel Saja

Dalam contoh ini saya hanya menentukan nama tabel.

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

Ini mengembalikan info tentang semua kolom di Artis meja.

Contoh 3 – Tentukan Database &Nama Kolom

Dalam contoh ini saya menentukan database dan kolom, tetapi bukan tabel.

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

Hasil (menggunakan keluaran vertikal):

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

Ini mengembalikan tiga kolom lagi. Ini terjadi dari tiga tampilan berbeda (basis data memiliki tiga tampilan dengan ArtistName kolom:BluesAlbums , JazzAlbums , dan RockAlbums ).

Contoh 4 – Tentukan Hanya Basis Data

Disini saya hanya menentukan databasenya saja:

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

Saya tidak akan menampilkan hasilnya di sini karena mengembalikan hampir 6.000 baris. Sebagian besar berasal dari sys skema tabel.

Contoh 5 – Tentukan Skema Tabel

Contoh berikut mempersempit hasil ke skema tabel tertentu (dbo ).

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

Ini mengembalikan kumpulan hasil yang jauh lebih kecil daripada contoh sebelumnya. Masih cukup besar, jadi saya tidak akan menampilkannya di sini.

Contoh 6 – Karakter Wildcard

Anda juga dapat menggunakan karakter wildcard. Berikut ini contoh penggunaan % karakter pengganti:

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

Ini mengembalikan semua kolom yang dimulai dengan Ar . Dalam kasus saya, ia mengembalikan dua ArtistId kolom dan empat ArtistName kolom.

Saya bisa mempersempit ini:

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

Ini hanya mengembalikan ArtistName kolom.

Namun, jika saya menghapus r :

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

Sekarang saya mendapatkan empat kolom tambahan bernama AlbumName (serta ArtistName kolom).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Periksa apakah Objek adalah Prosedur Tersimpan dengan Menggunakan OBJECTPROPERTY() di SQL Server

  2. Cara membuat banyak satu ke satu

  3. Hitung Total Berjalan di SQL Server

  4. Hitung berdasarkan kondisi di SQL Server

  5. SQL Server Internal:Rencana Caching Pt. I – Menggunakan Kembali Paket