Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2022 (16.x) и более поздних версий
Управляемого экземпляра Базы данных
SQL Azure SQL Azure
В этой статье вы проверяете целостность данных в таблицах реестра. Если вы настраиваете автоматическое хранилище дайджеста в вашей базе данных, см. раздел T-SQL об использовании автоматического хранилища дайджеста. В противном случае перейдите к разделу T-SQL с использованием ручного создания дайджестов.
Предварительные требования
- Активная подписка Azure, если вы используете Базу данных SQL Azure или Управляемый экземпляр SQL Azure. Если ее нет, создайте бесплатную учетную запись.
- Создайте и используйте обновляемые таблицы реестра или создайте и используйте таблицы реестра только для добавления данных.
- SQL Server Management Studio.
- Включите параметр ALTER DATABASE SET (Transact-SQL) в базе данных, прежде чем выполнять хранимые процедуры проверки.
Выполнение проверки реестра для базы данных
Подключитесь к базе данных с помощью SQL Server Management Studio.
Создайте новый запрос с помощью следующей инструкции T-SQL:
DECLARE @digest_locations AS NVARCHAR (MAX) = (SELECT * FROM sys.database_ledger_digest_locations FOR JSON AUTO, INCLUDE_NULL_VALUES); SELECT @digest_locations AS digest_locations; BEGIN TRY EXECUTE sys.sp_verify_database_ledger_from_digest_storage @digest_locations; SELECT 'Ledger verification succeeded.' AS Result; END TRY BEGIN CATCH THROW; END CATCHПримечание.
Вы также можете найти скрипт проверки на портале Azure. Откройте портал Azure и найдите базу данных для проверки. На вкладке Безопасностьвыберите параметр Реестр. В области реестра выберите "Проверить базу данных".
Выполните запрос. Вы увидите, что
digest_locationsвозвращает текущее расположение, в котором хранятся дайджесты базы данных и все предыдущие расположения. В окне Результаты отображается сообщение об успешности проверки реестра.Откройте набор результатов
digest_locations, чтобы ознакомиться с расположением дайджестов. Следующий пример демонстрирует два расположения дайджестов для этой базы данных.pathуказывает расположение дайджестов.last_digest_block_idуказывает идентификатор блока последнего дайджеста, хранящегося в расположенииpath.is_currentуказывает, является ли местоположение вpathтекущим (true) или предыдущим (false).[ { "path": "https:\/\/digest1.blob.core.windows.net\/sqldbledgerdigests\/janderstestportal2server\/jandersnewdb\/2021-05-20T04:39:47.6570000", "last_digest_block_id": 10016, "is_current": true }, { "path": "https:\/\/jandersneweracl.confidential-ledger.azure.com\/sqldbledgerdigests\/janderstestportal2server\/jandersnewdb\/2021-05-20T04:39:47.6570000", "last_digest_block_id": 1704, "is_current": false } ]
Внимание
При выполнении проверки реестра проверьте расположение
digest_locations, чтобы убедиться, что дайджесты, используемые в проверке, извлекаются из ожидаемых расположений. Убедитесь, что привилегированный пользователь не изменяет расположения хранилища дайджеста на незащищенное расположение хранилища, например хранилище Azure, без настроенной и заблокированной политики неизменяемости.Операция проверки возвращает следующее сообщение в окне Результаты.
Если в базе данных нет изменения, сообщение будет следующим:
Ledger verification successfulПри изменении базы данных в окне "Сообщения" появится следующая ошибка:
Failed to execute query. Error: The hash of block xxxx in the database ledger doesn't match the hash provided in the digest for this block.