sys.dm_cdc_log_scan_sessions (Transact-SQL)
現在のデータベース内のログ スキャン セッションごとに 1 行のデータを返します。返された行の最後は、現在のセッションを表します。このビューを使用すると、現在のログ スキャン セッションのステータス情報を取得できます。SQL Server のインスタンスが開始されてからのすべてのセッションの集計情報を取得することもできます。
列名 |
データ型 |
説明 |
---|---|---|
session_id |
int |
セッションの ID です。 この行に返されたデータが、SQL Server のインスタンスが開始されてからのすべてのセッションの集計である場合、この列は 0 になります。 |
start_time |
datetime |
セッションの開始時刻です。 session_id が 0 の場合は、集計対象データの収集が開始された時刻を表します。 |
end_time |
datetime |
セッションの終了時刻です。 NULL は、セッションがアクティブであることを表します。 session_id が 0 の場合は、最後のセッションが終了した時刻を表します。 |
duration |
bigint |
セッションの実行時間 (秒単位) です。 変更データ キャプチャ トランザクションがセッションに存在しない場合は 0 になります。 session_id が 0 の場合、変更データ キャプチャ トランザクションを持つすべてのセッションの実行時間の合計 (秒単位) を表します。 |
scan_phase |
nvarchar(200) |
セッションの現在のフェーズです。次のいずれかです。
フェーズ説明
1構成の読み取り
21 回目のスキャン (ハッシュ テーブルの構築)
32 回目のスキャン
42 回目のスキャン
52 回目のスキャン
6スキーマのバージョン管理
7最後のスキャン
8完了
session_id が 0 の場合、この値は常に "Aggregate" になります。 |
error_count |
int |
発生したエラーの数です。 session_id が 0 の場合は、すべてのセッションのエラー数の合計を表します。 |
start_lsn |
nvarchar(23) |
セッションの開始 LSN です。 session_id が 0 の場合は、最後のセッションの開始 LSN を表します。 |
current_lsn |
nvarchar(23) |
現在スキャン中の LSN です。 session_id が 0 の場合は、現在の LSN は 0 になります。 |
end_lsn |
nvarchar(23) |
セッションの最終 LSN です。 NULL は、セッションがアクティブであることを表します。 session_id が 0 の場合は、最後のセッションの最終 LSN を表します。 |
tran_count |
bigint |
処理された変更データ キャプチャ トランザクションの数です。このカウンタはフェーズ 2 で設定されます。 session_id が 0 の場合は、すべてのセッションについての処理済みトランザクションの数を表します。 |
last_commit_lsn |
nvarchar(23) |
処理された最終コミット ログ レコードの LSN です。 session_id が 0 の場合は、任意のセッションの最終コミット ログ レコードの LSN を表します。 |
last_commit_time |
datetime |
最終コミット ログ レコードが処理された時刻です。 session_id が 0 の場合は、任意のセッションの最終コミット ログ レコードの時刻を表します。 |
log_record_count |
bigint |
スキャンされたログ レコードの数です。 session_id が 0 の場合は、すべてのセッションについてのスキャン済みレコードの数を表します。 |
schema_change_count |
int |
検出されたデータ定義言語 (DDL) 操作の数です。このカウンタはフェーズ 6 で設定されます。 session_id が 0 の場合は、すべてのセッションについての処理済み DDL 操作の数を表します。 |
command_count |
bigint |
処理されたコマンドの数です。 session_id が 0 の場合は、すべてのセッションについての処理済みコマンドの数を表します。 |
first_begin_cdc_lsn |
nvarchar(23) |
変更データ キャプチャ トランザクションを含んでいた最初の LSN です。 session_id が 0 の場合、変更データ キャプチャ トランザクションを含んでいた最初の LSN を表します。 |
last_commit_cdc_lsn |
nvarchar(23) |
変更データ キャプチャ トランザクションを含んでいた最終コミット ログ レコードの LSN です。 session_id が 0 の場合、変更データ キャプチャ トランザクションを含んでいた任意のセッションについての、最終コミット ログ レコードの LSN を表します。 |
last_commit_cdc_time |
datetime |
変更データ キャプチャ トランザクションを含んでいた最終コミット ログ レコードが処理された時刻です。 session_id が 0 の場合、変更データ キャプチャ トランザクションを含んでいた任意のセッションの最終コミット ログ レコードが処理された時刻を表します。 |
latency |
int |
セッションの end_time と last_commit_cdc_time 間の時間差 (秒単位) です。このカウンタはフェーズ 7 の最後に設定されます。 session_id が 0 の場合、セッションによって記録された最後の latency 値 (0 以外) を表します。 |
empty_scan_count |
int |
変更データ キャプチャ トランザクションが含まれていなかった、連続するセッションの数です。 |
failed_sessions_count |
int |
失敗したセッションの数です。 |
説明
この動的管理ビューの値は、SQL Server のインスタンスが開始されると常にリセットされます。
権限
sys.dm_cdc_log_scan_sessions 動的管理ビューに対してクエリを実行するには、VIEW DATABASE STATE 権限が必要です。動的管理ビューに対する権限の詳細については、「動的管理ビューおよび関数 (Transact-SQL)」を参照してください。
例
次の例では、最新のセッションの情報を返します。
USE AdventureWorks;
GO
SELECT *
FROM sys.dm_cdc_log_scan_sessions
WHERE session_id = (SELECT MAX(b.session_id) from sys.dm_cdc_log_scan_sessions AS b);
GO