ENABLE_BROKER 与 NORECOVERY

5 service-broker sql-server-2012 high-availability

我有两个带有 MSSQL2012 的节点,它们与 AlwaysOn 高可用性一起工作

在一些崩溃之后,我不得不从节点之一上的可用性组中删除 db。为了恢复,我已经在第二个节点上备份了数据库(完整+日志),并根据标准程序在崩溃的节点上恢复了它。看起来完全没问题,但我遇到过,当我将主要角色赋予恢复的节点时,应用程序服务(使用 Service Broker)不做任何事情。

sys.databases 说对于我的数据库 is_broker_enabled=1,但我发现了几篇关于必须显式启用还原数据库上的代理的文章。

由于 AlwaysOn,SET ENABLE_BROKER 失败。

Internet 说激活服务代理的唯一方法是使用 ENABLE_BROKER 选项再次恢复数据库。但是为了将 db 添加到 AlwaysOn,我必须使用 NORECOVERY 恢复它。

试图运行

RESTORE DATABASE [dbname]
FROM  DISK = N'D:\111.bak'
WITH  NORECOVERY, ENABLE_BROKER
Run Code Online (Sandbox Code Playgroud)

我已经看到有关这两个 WITH 选项之间冲突的通知

有人知道进行这种恢复的正确方法吗?db 超过 150GB,检查每个版本总是需要两个多小时:)

提前致谢

Mat*_*tum 2

是的,在 RESTORE 中使用 ENABLE_BROKER 与 NORECOVERY 冲突。如果您的数据库处于 NORECOVERY 状态,您需要等到它恢复后再重新启用代理。如果遇到问题,请尝试使用立即回滚来重新启动:

ALTER DATABASE db_name SET ENABLE_BROKER with rollback immediate
Run Code Online (Sandbox Code Playgroud)