sys.sp_cdc_get_captured_columns (Transact-SQL)
指定したキャプチャ インスタンスによって追跡されるキャプチャ対象のソース列について、変更データ キャプチャのメタデータ情報を返します。 変更データ キャプチャは、Microsoft SQL Server のすべてのエディッションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2012 の各エディションがサポートする機能」を参照してください。
構文
sys.sp_cdc_get_captured_columns
[ @capture_instance = ] 'capture_instance'
引数
[ @capture\_instance = ] 'capture_instance'
ソース テーブルに関連付けられたキャプチャ インスタンスの名前を指定します。 capture_instance のデータ型は sysname で、NULL 値は許可されません。テーブルのキャプチャ インスタンスに関するレポートを作成するには、sys.sp_cdc_help_change_data_capture ストアド プロシージャを実行します。
リターン コードの値
成功した場合は 0 を、失敗した場合は 1 をそれぞれ返します。
結果セット
列名 |
データ型 |
説明 |
---|---|---|
source_schema |
sysname |
ソース テーブルのスキーマ名です。 |
source_table |
sysname |
ソース テーブルの名前です。 |
capture_instance |
sysname |
キャプチャ インスタンスの名前です。 |
column_name |
sysname |
キャプチャ対象のソース列の名前です。 |
column_id |
int |
ソース テーブル内の列の ID です。 |
ordinal_position |
int |
ソース テーブル内での列の位置です。 |
data_type |
sysname |
列のデータ型です。 |
character_maximum_length |
int |
文字ベースの列の場合は最大文字長です。それ以外の場合は、NULL です。 |
numeric_precision |
tinyint |
数値ベースの場合は、列の有効桁数です。それ以外の場合は、NULL です。 |
numeric_precision_radix |
smallint |
数値ベースの場合は、列の有効桁数の基数です。それ以外の場合は、NULL です。 |
numeric_scale |
int |
数値ベースの場合は、列の小数点以下桁数です。それ以外の場合は、NULL です。 |
datetime_precision |
smallint |
datetime ベースの場合は、列の有効桁数です。それ以外の場合は NULL です。 |
説明
キャプチャ インスタンスのクエリ関数 (cdc.fn_cdc_get_all_changes_<capture_instance> または cdc.fn_cdc_get_net_changes_<capture_instance>) から返されたキャプチャ対象列の列情報を取得するには、sys.sp_cdc_get_captured_columns を使用します。 列名、ID、および位置は、キャプチャ インスタンスの有効期間中は常に一定です。 追跡対象テーブルの基になるソース列のデータ型が変更された場合にのみ、列のデータ型が変化します。 ソース テーブルに対する列の追加または削除は、既存のキャプチャ インスタンスのキャプチャ対象列には影響しません。
ソース テーブルに適用されたデータ定義言語 (DDL) ステートメントに関する情報を取得するには、sys.sp_cdc_get_ddl_history を使用します。 DDL の変更によって追跡対象ソース列の構造が変更された場合、そのような DDL の変更がすべて結果セットとして返されます。
権限
db_owner 固定データベース ロールのメンバーシップが必要です。 それ以外のすべてのユーザーについては、ソース テーブルのすべてのキャプチャ対象列に対する SELECT 権限が必要です。さらに、キャプチャ インスタンスのゲーティング ロールが定義されている場合は、そのデータベース ロールのメンバーシップが必要です。 呼び出し元にソース データを表示する権限がない場合、エラー 22981 (オブジェクトが存在しないか、アクセスが拒否されました。) が返されます。
使用例
次の例は、HumanResources_Employee キャプチャ インスタンスに存在するキャプチャ対象列の情報を返します。
USE AdventureWorks2012;
GO
EXECUTE sys.sp_cdc_get_captured_columns
@capture_instance = N'HumanResources_Employee';
GO