Поделиться через


sys.sp_verify_database_ledger (Transact-SQL)

Область применения: SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр SQL Azure

Проверяет реестр базы данных и реестры таблиц. Для каждой строки в представлении sys.database_ledger хранимая процедура:

  1. Пересчитывает значение, хранящееся в столбце previous_block_hash строки.
  2. Проверяет, соответствует ли пересчитанное значение значению, которое в настоящее время хранится в столбце previous_block_hash.
  3. Если указанный список дайджестов содержит дайджест для блока реестра, который представляет строка, она проверяет, совпадает ли пересчитанное значение с хэшем в дайджесте.
  4. Если имя таблицы реестра указано с помощью table_name аргумента, хранимая процедура проверяет хэш таблицы для указанной таблицы, если она существует в столбце table_hashes.sys.database_ledger В противном случае он проверяет все хэши таблиц, существующие в столбце sys.database_ledgertable_hashes, кроме хэшей таблиц для не существующих (удаленных) таблиц. При проверке хэша таблицы для таблицы реестра хранимая процедура:
    1. Сканирует таблицу журнала таблицы реестра для повторной компиляции хэша таблицы, которая является хэшом всех строк, обновленных транзакцией, представленной текущей строкой в sys.database_ledger таблице реестра.
    2. Проверяет, совпадает ли хэш перекомпилированного таблицы со значением, хранящимся в столбце sys.database_ledger table_hashes для данной таблицы реестра.

Кроме того, хранимая процедура проверяет, что все некластеризованные индексы согласованы с указанной таблицей реестра. Если таблица реестра не указана, она проверяет все некластеризованные индексы для каждой существующей таблицы реестра, на которые ссылается столбец table_hashes в любой строке sys.database_ledger.

Дополнительные сведения о реестре базы данных см. в статье Реестр.

Соглашения о синтаксисе 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.