sys.sp_verify_database_ledger (Transact-SQL)

適用於: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL 受控執行個體

驗證資料庫總賬和數據表總帳。 針對檢視中的每個 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_ledgertable_hashes數據行中所參考的每個現有總賬數據表,驗證所有非叢集索引。

如需資料庫總賬的詳細資訊,請參閱 總賬

Transact-SQL 語法慣例

語法

sp_verify_database_ledger
    [ @digests = ] 'digests'
    [ , [ @table_name = ] 'table_name' ]

引數

[ @digests = ] 'digests'

JSON 檔,其中包含交易摘要清單,其中每個檔都是藉由查詢檢視取得的 sys.database_ledger_latest_digest 。 JSON 檔必須至少包含一個摘要。

[ @table_name = ] 'table_name'

您要驗證的資料表名稱。

傳回碼值

0 (成功)或 1 (失敗)。

結果集

一個資料列,其中一個資料行稱為 last_verified_block_id

權限

需要 VIEW LEDGER CONTENT 許可權。