sys.sp_verify_database_ledger (Transact-SQL)
適用対象: SQL Server 2022 (16.x) Azure SQL データベース Azure SQL Managed Instance
データベース台帳とテーブル台帳を検証します。 sys.database_ledger
ビューの各行について、ストアド プロシージャは次の操作を行います。
- 行の previous_block_hash 列に格納されている値が再計算されます。
- 再計算された値が、previous_block_hash 列に現在格納されている値と一致するかどうかが確認されます。
- 指定したダイジェストの一覧に、行が表す台帳ブロックのダイジェストが含まれている場合、再計算された値がダイジェスト内のハッシュと一致していることが検証されます。
table_name
引数を使用して台帳テーブル名が指定されている場合、ストアド プロシージャは、指定したテーブルのテーブル ハッシュがsys.database_ledger
のtable_hashes列に存在する場合は検証します。 それ以外の場合は、sys.database_ledger
のtable_hashes列に存在するすべてのテーブル ハッシュが検証されます。ただし、存在しない (削除された) テーブルのテーブル ハッシュは除きます。 台帳テーブルのテーブル ハッシュを確認する場合、ストアド プロシージャは次のようになります。- 台帳テーブルの履歴テーブルをスキャンして、テーブル ハッシュを再計算します。これは、台帳テーブルの現在の行によって表されるトランザクションによって更新されたすべての行のハッシュ
sys.database_ledger
。 - 再計算されたテーブル ハッシュが、特定の台帳テーブルの
sys.database_ledger
のtable_hashes列に格納されている値と一致するかどうかを確認します。
- 台帳テーブルの履歴テーブルをスキャンして、テーブル ハッシュを再計算します。これは、台帳テーブルの現在の行によって表されるトランザクションによって更新されたすべての行のハッシュ
さらに、ストアド プロシージャは、すべての非クラスター化インデックスが指定された台帳テーブルと一致していることを確認します。 台帳テーブルが指定されていない場合は、 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 権限が必要です。