sys.sp_cdc_get_captured_columns (Transact-SQL)
適用対象: SQL Server
指定したキャプチャ インスタンスによって追跡されるキャプチャ対象のソース列について、変更データ キャプチャのメタデータ情報を返します。 変更データ キャプチャは、SQL Server のすべてのエディションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2022 の各エディションとサポートされている機能」を参照してください。
構文
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。 |
column_ordinal |
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 。 |
解説
sys.sp_cdc_get_captured_columns
を使用して、キャプチャ インスタンスクエリ関数cdc.fn_cdc_get_all_changes_<capture_instance>またはcdc.fn_cdc_get_net_changes_<capture_instance>をクエリすることによって返されるキャプチャされた列に関する列情報を取得します。 キャプチャ インスタンスの有効期間中、列名、ID、位置は一定のままです。 追跡対象テーブルの基になるソース列のデータ型が変更された場合にのみ、列のデータ型が変化します。 ソース テーブルに対して追加または削除された列は、既存のキャプチャ インスタンスのキャプチャされた列には影響しません。
sys.sp_cdc_get_ddl_historyを使用して、ソース テーブルに適用されるデータ定義言語 (DDL) ステートメントに関する情報を取得します。 DDL の変更によって追跡対象ソース列の構造が変更された場合、そのような DDL の変更がすべて結果セットとして返されます。
アクセス許可
db_owner 固定データベース ロール内でメンバーシップが必要です。 他のすべてのユーザーには、ソース テーブル内のキャプチャされたすべての列に対する SELECT アクセス許可と、キャプチャ インスタンスのゲーティング ロールが定義されている場合は、そのデータベース ロールのメンバーシップが必要です。 呼び出し元にソース データを表示するアクセス許可がない場合、関数はエラー 22981 (Object doesn't exist or access is denied.
) を返します。
例
次の例は、HumanResources_Employee
キャプチャ インスタンスに存在するキャプチャ対象列の情報を返します。
USE AdventureWorks2022;
GO
EXECUTE sys.sp_cdc_get_captured_columns
@capture_instance = N'HumanResources_Employee';
GO