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';
これにより、 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
これにより、さらに3つの列が返されました。これらはたまたま3つの異なるビューからのものです(データベースにはArtistName
を持つ3つのビューがあります 列:BluesAlbums
、JazzAlbums
、およびRockAlbums
。
例4–データベースのみを指定する
ここではデータベースのみを指定します:
EXEC sp_columns_ex @table_server = 'Homer', @table_catalog = 'Music';
約6,000行が返されたため、ここでは結果を表示しません。これらのほとんどは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
で始まるすべての列が返されます 。私の場合、2つの
ArtistId
が返されました 列と4つの
ArtistName
列。
これを絞り込むことができます:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'Ar%Name';
これは ArtistName だけを返しました 列。
ただし、r
を削除すると :
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'A%Name';
AlbumName という4つの追加の列を取得しました (および ArtistName 列)。