次の方法で共有


sys.sp_cdc_get_captured_columns (Transact-SQL)

適用対象: SQL Server

指定したキャプチャ インスタンスによって追跡されるキャプチャ対象のソース列について、変更データ キャプチャのメタデータ情報を返します。 変更データ キャプチャは、SQL Server のすべてのエディションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2022 の各エディションとサポートされている機能」を参照してください。

Transact-SQL 構文表記規則

構文

sys.sp_cdc_get_captured_columns
    [ @capture_instance = ] 'capture_instance'
[ ; ]

引数

[ @capture_instance = ] 'capture_instance'

ソース テーブルに関連付けられているキャプチャ インスタンスの名前。 @capture_instancesysname であり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