sys.sp_verify_database_ledger (Transact-SQL)
適用対象: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance
データベース台帳とテーブル台帳を検証します。 ビューの各行に対して sys.database_ledger
、ストアド プロシージャは次の操作を行います。
- 行の previous_block_hash 列に格納されている値が再計算されます。
- 再計算された値が、previous_block_hash 列に現在格納されている値と一致するかどうかが確認されます。
- 指定したダイジェストの一覧に、行が表す台帳ブロックのダイジェストが含まれている場合、再計算された値がダイジェスト内のハッシュと一致していることが検証されます。
- 引数を使用して
table_name
台帳テーブル名が指定されている場合、ストアド プロシージャは、指定されたテーブルのテーブル ハッシュが存在する場合は、そのテーブルのtable_hashes列に存在するかどうかを確認しますsys.database_ledger
。 それ以外の場合は、存在しない (削除された) テーブルのテーブル ハッシュを除き、table_hashes列sys.database_ledger
に存在するすべてのテーブル ハッシュが検証されます。 台帳テーブルのテーブル ハッシュを確認する場合、ストアド プロシージャは次のようになります。- 台帳テーブルの履歴テーブルをスキャンしてテーブル ハッシュを再計算します。これは、台帳テーブル内の現在の行によって表されるトランザクションによって更新されたすべての行
sys.database_ledger
のハッシュです。 - 再計算されたテーブル ハッシュが、特定の台帳テーブルのtable_hashes列
sys.database_ledger
に格納されている値と一致するかどうかを確認します。
- 台帳テーブルの履歴テーブルをスキャンしてテーブル ハッシュを再計算します。これは、台帳テーブル内の現在の行によって表されるトランザクションによって更新されたすべての行
さらに、ストアド プロシージャは、すべての非クラスター化インデックスが指定された台帳テーブルと一致していることを確認します。 台帳テーブルが指定されていない場合は、任意の行 sys.database_ledger
の table_hashes 列で参照されている既存の台帳テーブルごとに、非クラスター化インデックスがすべて検証されます。
データベース台帳の詳細については、台帳に関する記事を参照してください。
構文
sp_verify_database_ledger
[ @digests = ] 'digests'
[ , [ @table_name = ] 'table_name' ]
引数
[ @digests = ] 'digests'
トランザクション ダイジェストの一覧を含む JSON ドキュメント。各ドキュメントは、ビューのクエリによって sys.database_ledger_latest_digest
取得されています。 JSON ドキュメントには、1 つ以上のダイジェストが含まれている必要があります。
[ @table_name = ] 'table_name'
検証するテーブルの名前。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
1 行で、1 つの列が呼び出されます last_verified_block_id
。
アクセス許可
VIEW LEDGER CONTENT 権限が必要です。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示