我有一个使用日志传送的备用配置的 SQLSERVER 2008 实例。
生产服务器每 30 分钟运行一次 LSBACKUP 作业,将其传送到备用服务器,然后备用服务器将 LSRESTORE 传送的日志。
我遇到的问题是,如果任何用户会话正在访问数据库,LSRESTORE 作业将失败,即使他们没有包含任何写操作的活动事务。
数据库处于(Standby / Read-Only)
模式中,因此没有可能挂起的写入操作,只需在 SSMS 中开发数据库表就会阻止 LSRESTORE 作业,并显示以下错误日志:
2017-02-14 09:29:22.87 *** Error: Exclusive access could not be obtained because the database is in use.
RESTORE LOG is terminating abnormally.(.Net SqlClient Data Provider) ***
我找到的唯一解决方案是发生这种情况时,我可以将数据库设置为 single_user 并返回到 multi_user 以清除错误。我还可以在恢复之前的一个步骤中将 SQL 命令放入 SQLAGENT 作业中,但它看起来更像是一种破解而不是修复!
ALTER DATABASE [db_name_goes_here] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE [db_name_goes_here] SET MULTI_USER
是否可以通过任何方式保护我的备用机免受此问题的影响?
当您使用辅助数据库进行查询处理时,您必须检查