无法打开数据库。它正在恢复中?

u23*_*534 5 sql-server log-shipping

我已经使用待机模式设置了日志传送?未选中“还原备份时断开数据库中的用户”)。

我测试了在辅助服务器/数据库上运行以下代码。

declare @a int
while 1=1
begin
  select @a = count(*) from ....
end
Run Code Online (Sandbox Code Playgroud)

但是,当日志传送还原作业开始运行时,代码会因以下错误而停止。

无法打开数据库。它正处于恢复过程中。

如何避免这个问题?

Aar*_*and 5

这是一种日志传送如何工作。您需要对数据库的独占访问权限才能应用日志备份,这意味着您的脚本必须将数据库设置为 single_user 或以其他方式驱逐所有用户,然后才能应用日志备份。

一些解决方法:

  1. 将您的恢复安排在工作时间之外,并让他们在此期间继续查询陈旧数据。
  2. 排队多个日志备份并应用它们,例如,每小时或每两小时。用户全天定期获得更新,中断频率低于主数据库上的日志备份计划。
  3. 不要强迫你的脚本把用户踢出去。这意味着日志还原将一直等待,直到没有与数据库的活动连接。我从来没有真正尝试过这个,它的可行性真的取决于你的辅助设备有多活跃。
  4. 拥有多个辅助节点并在它们之间循环。我已经写了很多关于这种方法的文章