【问题标题】:How to recover Service Broker after restoring database?恢复数据库后如何恢复 Service Broker?
【发布时间】:2021-04-17 06:21:52
【问题描述】:

在其他服务器上恢复数据库后,Service Broker 将停止。 恢复的数据库有一个 Trustworthy Off,现在我将它设置为 On 以再次运行 Broker。 我知道这是不好的做法。特别是在阅读了所罗门鲁茨基的文章之后。 我已经按照 Solomon 对 SQLCLR UNSAFE 函数的建议进行了操作,但没有将数据库设置为 TRUSTWORTHY ON。效果很好!

如果 TRUSTWORTHY OFF,如何恢复 Broker 工作?

【问题讨论】:

  • Service Broker 最初是如何配置的?原始安装是否启用了TRUSTWORTHY?还是使用证书?如果最初启用了TRUSTWORTHY,那么需要在恢复时启用它是有意义的,因为该设置在恢复时总是被禁用。如果使用证书,则可能需要首先安装在[master] 中(并且暗示这样的证书已经安装在原始实例上)。这和 Ben 在他的回答中提出的建议。

标签: sql-server sqlclr service-broker


【解决方案1】:

运行 Service Broker 不需要 Trustworthy。但是,您可以将一个选项传递给RESTORE 语句,这可能正是您所需要的。引用the docs:

ENABLE_BROKER

指定 Service Broker 消息传递是 在还原结束时启用,以便可以发送消息 立即地。默认情况下,Service Broker 消息传递被禁用 在恢复期间。数据库保留现有的 Service Broker 标识符。

如果你不这样做,还有希望!恢复后,您可以发出alter databse [yourDB] set enable_broker;。请注意,这需要独占数据库访问权限,因此您可能还需要添加with rollback immediate 或类似于alter database 语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-21
    • 2022-11-24
    • 2020-07-07
    • 2015-10-04
    • 2010-11-07
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多