sys.sp_verify_database_ledger (Transact-SQL)
適用於:SQL Server 2022 (16.x) Azure SQL 資料庫 Azure SQL 受控執行個體
驗證資料庫總賬和數據表總帳。 針對檢視中的每個 sys.database_ledger
資料列,預存程式:
- 重新計算儲存在數據列previous_block_hash數據行中的值。
- 檢查重新計算的值是否符合目前儲存在previous_block_hash數據行中的值。
- 如果指定的摘要清單包含數據列所代表之總賬區塊的摘要,它會驗證重新計算的值符合摘要中的哈希。
- 如果使用 自變數指定
table_name
總賬數據表名稱,則預存程式會在的 table_hashessys.database_ledger
數據行中驗證指定數據表的數據表哈希。 否則,它會驗證 中table_hashessys.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 檔必須至少包含一個摘要。
[ @table_name = ] 'table_name'
您要驗證的資料表名稱。
傳回碼值
0
(成功) 或 1
(失敗)。
結果集
一個資料列,其中一個資料行稱為 last_verified_block_id
。
權限
需要 VIEW LEDGER CONTENT 許可權。