我们有 AG 感知的 SQL 代理作业:第一个作业步骤检查服务器是否是主服务器(如果是,则转到下一步,即实际的作业步骤),否则退出报告成功的作业。
有 1 个数据库未参与 AG(计划是在发生故障转移时手动恢复此数据库)。主数据库上有一个作业从该数据库调用 SP。我被要求在辅助服务器上创建此作业(以便在故障转移后我们只需恢复数据库而无需重新创建作业)。由于辅助数据库上不存在该数据库,因此我无法在辅助数据库上为该数据库创建作业。即使我在辅助数据库上恢复数据库的副本,创建作业,然后删除数据库,数据库下拉列表(在作业内)也会变成空。
一种解决方案是在恢复此数据库后手动创建故障转移后的作业。是否有任何替代解决方案允许我在数据库不存在的情况下创建代理作业?
“作业步骤”窗口中的数据库下拉列表仅用于指定执行上下文。如果您完全限定代码的对象引用(如 Tibor 提到的),并且只要执行用户有权访问该数据库,那么为执行上下文选择哪个数据库并不重要。
在您的情况下,一个安全的选择是选择
master
数据库,然后使用三部分命名约定完全限定过程名称,如下所示:或者只是使用代码中的语句将执行数据库上下文切换为代码的一部分,
USE
如下所示:我建议完全限定对象引用的第一个选项。