如何永久将SQL Server数据库设置为SINGLE_USER模式解决日志传送还原故障
配置说明
永久设置SINGLE_USER模式的方法
ALTER DATABASE [数据库名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE本身是持久化配置,执行后不会因为实例断开重连自动恢复为MULTI_USER。如果出现自动切换的情况,优先排查是否存在日志传送内置逻辑、自定义运维作业、高权限账号操作主动修改了数据库访问模式,停止对应操作即可长期保持单用户模式。
如果无法定位自动切换的根因,可在日志还原作业的首个步骤添加上述设置单用户的命令,确保每次还原执行前数据库都处于单用户状态,避免被其他会话占用。
日志传送只读场景的最优方案
针对「备用库支持只读查询+日志还原不被会话占用打断」的需求,无需强制使用SINGLE_USER模式,直接修改日志传送辅助服务器配置即可实现:
- 打开对应日志传送的辅助数据库配置页
- 勾选在还原备份时断开与数据库的用户连接选项
配置完成后,SQL Server会在每次执行事务日志还原时自动终止所有活跃的只读会话,获取排他锁完成还原后自动恢复数据库的只读访问权限,无需手动调整数据库访问模式,也不会影响正常的只读查询使用,适配性远高于长期开启单用户模式。
注意事项
SINGLE_USER模式同一时间仅允许一个会话连接数据库,若普通查询会话抢先连接到数据库,日志还原的作业进程会因无法获取连接权限执行失败,非必要不推荐长期开启该配置。
内容的提问来源于stack exchange,提问作者Cataster
相关产品推荐
相关产品推荐

