sys.sp_verify_database_ledger (Transact-SQL)

适用于: 是Azure SQL 数据库

验证数据库分类帐和表的分类帐。 对于 sys.database_ledger 视图中的每一行,存储过程:

  1. 重新计算在行的 previous_block_hash 列中存储的值。
  2. 检查重新计算值是否与当前存储在 previous_block_hash 列中的值相匹配。
  3. 如果指定的摘要列表包含该行所表示的分类账块的摘要,则它将验证重新计算值是否与摘要中的哈希匹配。
  4. 如果使用参数指定了一个分类帐表名称 table_name ,则该存储过程将验证指定表的表哈希值(如果它存在于 sys.database_ledger 的 table_hashes 列中)。 否则,它将验证 sys.database_ledger 的 table_hashes 列中现有的所有表哈希,但不 (存在的表哈希将) 表中删除。 为分类帐表验证表哈希时,存储过程:
    1. 扫描分类帐表的历史记录表以重新计算表哈希值,该表是由分类帐表中 sys.database_ledger 的当前行所表示的事务更新的所有行的哈希值。
    2. 检查重新计算表的哈希是否与给定分类账表的 sys.database_ledger table_hashes 列中存储的值匹配。

此外,存储过程将验证所有非聚集索引是否与指定的分类帐表一致。 如果未指定任何会计表,则它将验证 sys.database_ledger 的任意行中 table_hashes 列中引用的每个现有分类帐表的所有非聚集索引。

有关数据库分类帐的详细信息,请参阅Azure SQL 数据库分类帐

主题链接图标 Transact-SQL 语法约定

语法

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

参数

[ @digests =] "摘要"

一个 JSON 文档,其中包含一个事务摘要列表,其中每个摘要都是通过查询 sys.database_ledger_latest_digest 视图获取的。 JSON 文档必须包含至少一个摘要。

返回代码值

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

结果集

无。

权限

需要 " 查看分类帐内容 " 权限。

另请参阅