sys.sp_verify_database_ledger (Transact-SQL)

適用対象: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance

データベース台帳とテーブル台帳を検証します。 ビューの各行に対して sys.database_ledger 、ストアド プロシージャは次の操作を行います。

  1. 行の previous_block_hash 列に格納されている値が再計算されます。
  2. 再計算された値が、previous_block_hash 列に現在格納されている値と一致するかどうかが確認されます。
  3. 指定したダイジェストの一覧に、行が表す台帳ブロックのダイジェストが含まれている場合、再計算された値がダイジェスト内のハッシュと一致していることが検証されます。
  4. 引数を使用して table_name 台帳テーブル名が指定されている場合、ストアド プロシージャは、指定したテーブルのテーブル ハッシュが のtable_hashes列に存在する場合に検証します sys.database_ledger。 それ以外の場合は、 のtable_hashes列 sys.database_ledgerに存在するすべてのテーブル ハッシュが検証されます。ただし、存在しない (削除された) テーブルのテーブル ハッシュを除きます。 台帳テーブルのテーブル ハッシュを検証する場合、ストアド プロシージャによって次が実行されます。
    1. 台帳テーブルの履歴テーブルをスキャンしてテーブル ハッシュを再計算します。これは、台帳テーブルの現在の行によって表されるトランザクションによって更新されたすべての行 sys.database_ledger のハッシュです。
    2. 再計算されたテーブル ハッシュが、特定の台帳テーブルの table_hashes 列 sys.database_ledger に格納されている値と一致するかどうかを確認します。

さらに、ストアド プロシージャは、すべての非クラスター化インデックスが指定された台帳テーブルと一致していることを確認します。 台帳テーブルが指定されていない場合、任意の行 sys.database_ledgerの table_hashes 列で参照されている既存の台帳テーブルごとに、すべての非クラスター化インデックスが検証されます。

データベース台帳の詳細については、台帳に関する記事を参照してください。

Transact-SQL 構文表記規則

構文

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 権限が必要です。

次の手順