Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо к следующим версиям: SQL Server 2019 (15.x) и более поздних версий
В этой статье описано, как включить и отключить ускоренное восстановление базы данных (ADR) с помощью Transact-SQL (T-SQL) в SQL Server 2019 (15.x) и более поздних версий, а также как изменить файловую группу хранения постоянных версий (PVS), используемую ADR.
Примечание.
В Базе данных SQL Azure, Управляемом экземпляре SQL Azure и базе данных SQL в Microsoft Fabric всегда включено ускоренное восстановление базы данных (ADR). При возникновении проблем, таких как высокое использование хранилища PVS или медленная очистка ADR, см. Мониторинг и устранение неполадок ускоренного восстановления базы данных или обратитесь в службу поддержки Azure .
Когда следует использовать ускоренное восстановление баз данных
Многие клиенты находят ускоренное восстановление базы данных (ADR) ценной технологией для повышения скорости восстановления базы данных и избежания длительных откатов.
Если рабочие нагрузки базы данных часто сталкиваются со следующими сценариями, вы можете воспользоваться ADR:
- Длительные транзакции, которые нельзя избежать. Например, ADR помогает в тех случаях, когда длительные транзакции находятся под угрозой отката.
- Активные транзакции, которые приводят к значительному росту журнала транзакций.
- Длительное восстановление базы данных, влияющее на доступность базы данных (например, после неожиданного перезапуска SQL Server или отката транзакций вручную).
Если приложение использует большой объем однострочных изменений в отдельных транзакциях, рабочая нагрузка может оказаться не оптимальной для ADR. Рассмотрите возможность пакетного изменения в инструкциях с несколькими строками, где это возможно, и избегайте большого объема небольших транзакций DML.
Включение ADR
ADR отключен по умолчанию и доступен начиная с SQL Server 2019 (15.x).
Используйте следующую команду Transact-SQL (T-SQL), чтобы включить ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
Для включения или отключения ADR необходимо включить или отключить монопольную блокировку базы данных. Это означает, что команда ALTER DATABASE
блокируется до тех пор, пока все активные сеансы не завершатся, и что все новые сеансы ждут после команды ALTER DATABASE
. Если важно завершить операцию и удалить блокировку, можно использовать предложение завершения, WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
для прерывания любых активных сеансов в базе данных. Дополнительные сведения см. в параметрах ALTER DATABASE SET.
Если включить или отключить ADR в tempdb
, эксклюзивная блокировка базы данных не требуется, и условие завершения не должно быть указано. Однако перезапуск ядра СУБД должен произойти, чтобы изменения вступили в силу.
Отключение ADR
Чтобы отключить ADR, используйте следующую команду T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
Даже после отключения ADR могут быть версии, хранящиеся в PVS, которые система всё ещё требует для логического отката, пока все активные транзакции не будут завершены. При отключении ADR в tempdb
требуется перезагрузка ядра СУБД, чтобы изменения вступили в силу.
Изменение файловой группы PVS
По умолчанию данные сохраняемого хранилища версий (PVS) хранятся в файловой группе PRIMARY
. При необходимости можно переместить PVS в другую файловую группу. Например, может потребоваться больше места или более быстрого хранения.
Чтобы изменить расположение PVS на другую файловую группу, выполните следующие действия.
Создайте файловую группу для PVS и добавьте хотя бы один файл данных в эту файловую группу. Например:
ALTER DATABASE [<db_name>] ADD FILEGROUP [VersionStoreFG]; GO ALTER DATABASE [<db_name>] ADD FILE ( NAME = N'VersionStoreFG', FILENAME = N'E:\DATA\VersionStore.ndf', SIZE = 8192 MB, FILEGROWTH = 64 MB ) TO FILEGROUP [VersionStoreFG];
Отключите ADR со следующей командой T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
Дождитесь удаления всех версий, хранящихся в PVS.
Чтобы включить ADR, используя новое расположение PVS, сначала убедитесь, что все сведения о версиях удалены из предыдущего расположения PVS. Вы можете принудительно выполнить очистку с помощью хранимой процедуры sys.sp_persistent_version_cleanup:
EXEC sys.sp_persistent_version_cleanup [<db_name>];
Хранимая процедура
sys.sp_persistent_version_cleanup
является синхронной, что означает, что она не завершится, пока все сведения о версии не будут удалены из текущего PVS. После завершения процесса и при отключении ADR можно убедиться, что сведения о версии удаляются, запрашивая sys.dm_tran_persistent_version_store_stats и проверяя значениеpersistent_version_store_size_kb
. Например:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
Когда значение
persistent_version_store_size_kb
равно0
, повторно включите ADR и разместите PVS в новой файловой группе.Включите ADR и укажите новое расположение PVS с помощью следующей команды T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
Примечание.
Перемещение PVS в другую файловую группу не поддерживается в tempdb
, потому что в файловую группу нельзя добавлять файлы в tempdb
.
Контроль размера PVS
После включения ADR в базе данных отслеживайте размер сохраняемого хранилища версий (PVS) и производительности очистки PVS. Дополнительные сведения см. в статье Мониторинг и устранение неполадок с ускорением восстановления базы данных.