如何在SQL Server 2019 Express版中禁用加速数据库恢复(ADR)功能
SQL Server 2019 Express 禁用ADR功能操作方案
首先给出明确结论:SQL Server 2019 Express版本没有对ADR功能的开关做版本限制,完全可以通过官方T-SQL命令禁用该功能,不存在技术层面的拦截。
具体操作分两种场景,所有操作都需要使用具有sysadmin角色的账号执行:
- 针对单个已有数据库禁用ADR(推荐按需使用,不影响实例下其他库)
操作前建议先对目标库做全量备份,执行时会短暂中断该库的业务连接,建议在业务低峰期操作,对应执行脚本:
执行完成后,可以通过系统视图验证配置是否生效,查询结果中USE master GO -- 替换下方占位符为实际要操作的数据库名称 DECLARE @dbName SYSNAME = N'你的目标数据库名' -- 将目标库切换为单用户模式,强制回滚所有未完成事务、断开活动连接 EXEC('ALTER DATABASE [' + @dbName + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE') GO -- 关闭ADR功能 EXEC('ALTER DATABASE [' + @dbName + '] SET ACCELERATED_DATABASE_RECOVERY = OFF') GO -- 恢复多用户访问模式 EXEC('ALTER DATABASE [' + @dbName + '] SET MULTI_USER') GOis_accelerated_database_recovery_on字段返回0即为禁用成功:SELECT name, is_accelerated_database_recovery_on FROM sys.databases WHERE name = N'你的目标数据库名' - 修改实例级默认配置(仅对后续新建的数据库生效)
该操作不会修改已经存在的数据库的ADR状态,仅会把实例新建库的默认ADR配置改为关闭,对应执行脚本:USE master GO -- 开启高级配置项可见性 EXEC sp_configure 'show advanced options', 1 RECONFIGURE WITH OVERRIDE GO -- 将实例级ADR默认值设为关闭 EXEC sp_configure 'accelerated database recovery', 0 RECONFIGURE WITH OVERRIDE GO -- 关闭高级配置项可见性 EXEC sp_configure 'show advanced options', 0 RECONFIGURE WITH OVERRIDE GO
注意事项:
- 禁用ADR后,数据库会回归2017及更早版本的恢复逻辑,异常崩溃后的恢复耗时、长事务回滚耗时会和实例上的最长活动事务时长直接相关,大事务场景下可能出现较长时间的库不可用,需要提前评估业务风险。
- 不要在数据库正在执行长事务、备份还原等操作时执行ADR开关命令,否则可能出现操作阻塞甚至元数据异常。
内容的提问来源于stack exchange,提问作者kbisang
相关产品推荐
相关产品推荐

