Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: 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.