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