sp_columns_ex (Transact-SQL)

適用対象: SQL Server

指定したリンク サーバー テーブルに対し、1 列あたり 1 行の列情報を返します。 sp_columns_ex は、 @column_name が指定されている場合、特定の列についてのみ列情報を返します。

Transact-SQL 構文表記規則

構文

sp_columns_ex
    [ @table_server = ] N'table_server'
    [ , [ @table_name = ] N'table_name' ]
    [ , [ @table_schema = ] N'table_schema' ]
    [ , [ @table_catalog = ] N'table_catalog' ]
    [ , [ @column_name = ] N'column_name' ]
    [ , [ @ODBCVer = ] ODBCVer ]
[ ; ]

引数

[ @table_server = ] N'table_server'

列情報を返すリンク サーバーの名前。 @table_serversysname で、既定値はありません。

[ @table_name = ] N'table_name'

列情報を返すテーブルの名前。 @table_namesysname で、既定値は NULL です。

[ @table_schema = ] N'table_schema'

列情報を返すテーブルのスキーマ名。 @table_schemasysname で、既定値は NULL です。

[ @table_catalog = ] N'table_catalog'

列情報を返すテーブルのカタログ名。 @table_catalogsysname で、既定値は NULL です。

[ @column_name = ] N'column_name'

情報を提供するデータベース列の名前。 @column_namesysname で、既定値は NULL です。

[ @ODBCVer = ] ODBCVer

使用されている ODBC のバージョン。 @ODBCVerint で、既定値は 2 です。 これは ODBC バージョン 2 を示します。 有効な値は 2 または 3です。 バージョン 2 と 3 の動作の違いについては、ODBC SQLColumns 仕様を参照してください。

リターン コードの値

なし。

結果セット

列名 データ型 説明
TABLE_CAT sysname テーブルまたはビュー修飾子の名前。 さまざまな DBMS 製品では、テーブルの 3 部構成の名前付け (<qualifier>.<owner>.<name>) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。 このフィールドは NULLできます。
TABLE_SCHEM sysname テーブルまたはビュー所有者の名前。 SQL Server では、この列はテーブルを作成したデータベース ユーザーの名前を表します。 このフィールドには常に値が返されます。
TABLE_NAME sysname テーブルまたはビューの名前。 このフィールドには常に値が返されます。
COLUMN_NAME sysname 返される TABLE_NAME の各列の列名。 このフィールドには常に値が返されます。
DATA_TYPE smallint ODBC 型インジケーターに対応する int 値。 ODBC 型にマップできないデータ型の場合、この値は NULL。 ネイティブ データ型名は、 TYPE_NAME 列に返されます。
TYPE_NAME varchar(13) データ型を表す文字列。 このデータ型名は、基になる DBMS で提供されます。
COLUMN_SIZE int 有効桁数。 PRECISION列の戻り値は 10 進数です。
BUFFER_LENGTH int データの転送サイズ。1
DECIMAL_DIGITS smallint 小数点以下の桁数。
NUM_PREC_RADIX smallint 数値データ型の基数です。
NULLABLE smallint NULL 値の許容を示します。

1 = NULL が可能です。
0 = NOT NULL.
REMARKS varchar(254) このフィールドは常に NULLを返します。
COLUMN_DEF varchar(254) 列の既定値です。
SQL_DATA_TYPE smallint 記述子の TYPE フィールドに表示される SQL データ型の値。 この列は、datetime および SQL-92 interval データ型を除き、DATA_TYPE列と同じです。 この列は常に値が返されます。
SQL_DATETIME_SUB smallint datetime および SQL-92 の interval データ型のサブタイプ コード。 その他のデータ型の場合、この列は NULLを返します。
CHAR_OCTET_LENGTH int 文字型または整数型の列の最大長 (バイト単位)。 その他のすべてのデータ型の場合、この列は NULLを返します。
ORDINAL_POSITION int テーブル内の列の序数位置。 テーブルの最初の列は 1 です。 この列は常に値が返されます。
IS_NULLABLE varchar(254) テーブル内の列の NULL 値の許容。 ISO の規則に従って、NULL 値の許容が判断されます。 ISO SQL 準拠の DBMS は空の文字列を返すことはできません。

YES = 列には NULLを含めることができます。
NO = 列に NULLを含めることはできません。

NULL 値の許容が不明な場合、この列は長さ 0 の文字列になります。

この列に対して返される値は、 NULLABLE 列に対して返される値とは異なります。
SS_DATA_TYPE tinyint 拡張ストアド プロシージャで使用される SQL Server データ型。

詳細については、「 ODBC の概要を参照してください。

解説

  • sp_columns_exは、@table_serverに対応する OLE DB プロバイダーのIDBSchemaRowset インターフェイスのCOLUMNS行セットに対してクエリを実行することによって実行されます。 @table_name@table_schema@table_catalog、および@column_nameパラメーターがこのインターフェイスに渡され、返される行が制限されます。

  • sp_columns_ex指定したリンク サーバーの OLE DB プロバイダーが、IDBSchemaRowset インターフェイスのCOLUMNS行セットをサポートしていない場合は、空の結果セットが返されます。

  • sp_columns_ex は、区切り記号付き識別子の要件に従います。 詳細については、「 Database 識別子」を参照してください。

アクセス許可

スキーマに対する SELECT アクセス許可が必要です。

次の例では、リンク サーバー JobTitle 上の AdventureWorks2022 データベースにある、HumanResources.Employee テーブルの Seattle1 列のデータ型を返します。

EXEC sp_columns_ex 'Seattle1',
    'Employee',
    'HumanResources',
    'AdventureWorks2022',
    'JobTitle';