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