sys.sp_verify_database_ledger (Transact-SQL)
Область применения: SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр SQL Azure
Проверяет реестр базы данных и реестры таблиц. Для каждой строки в представлении sys.database_ledger
хранимая процедура:
- Пересчитывает значение, хранящееся в столбце previous_block_hash строки.
- Проверяет, соответствует ли пересчитанное значение значению, которое в настоящее время хранится в столбце previous_block_hash.
- Если указанный список дайджестов содержит дайджест для блока реестра, который представляет строка, она проверяет, совпадает ли пересчитанное значение с хэшем в дайджесте.
- Если имя таблицы реестра указано с помощью
table_name
аргумента, хранимая процедура проверяет хэш таблицы для указанной таблицы, если она существует в столбце table_hashes.sys.database_ledger
В противном случае он проверяет все хэши таблиц, существующие в столбцеsys.database_ledger
table_hashes, кроме хэшей таблиц для не существующих (удаленных) таблиц. При проверке хэша таблицы для таблицы реестра хранимая процедура:- Сканирует таблицу журнала таблицы реестра для повторной компиляции хэша таблицы, которая является хэшом всех строк, обновленных транзакцией, представленной текущей строкой в
sys.database_ledger
таблице реестра. - Проверяет, совпадает ли хэш перекомпилированного таблицы со значением, хранящимся в столбце
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.