【问题标题】:Running Stored Procs on Different Databases through Agent Job通过代理作业在不同的数据库上运行存储过程
【发布时间】:2015-10-29 16:41:47
【问题描述】:

我有一个列表,其中包含三个存储过程,它们需要每天在多个单独的 SQL 数据库上运行。每个数据库的名称不同,但每个数据库上的存储过程都是相同的。

我对基本查询以外的任何知识都非常有限,但我想我可以在我设置为 Master 的数据库上拥有 SQL Server 代理工作。然后,一旦我将它们配置为目标,我就让该服务器将该作业推送到其他数据库。我的问题是,在考虑这个问题时,数据库名称不同,在 SQL Server 代理向导中,我只能将数据库设置为主实例上当前的数据库。

通过服务器执行此循环以运行存储过程的最佳方法是什么?

【问题讨论】:

  • 您是指不同的 SQL Server 实例(可能位于同一物理服务器或不同的机器上),而不仅仅是存在于同一个服务实例下的不同数据库?
  • 它们是不同的 SQL Server 实例。
  • 您是否将所有这些实例列为链接服务器到您视为主服务器的服务器?如果是这样,您可以考虑使用 OPENQUERY 进行远程执行。
  • 它们没有链接,但看起来这是最好的路线。我听说过 OPENROWSET ,但这需要允许 Ad Hoc 查询,这似乎不合适。我也听说过 SSIS,但我对它一无所知,不知道在哪里与 SSIS 在一起。

标签: sql-server


【解决方案1】:

您正在寻找的是链接服务器。它们允许链接服务器,以便您可以将对象从一台服务器调用到另一台服务器。它们很容易设置。在您的情况下,您需要在主服务器上创建 3 个链接服务器,用于安排作业。链接服务器将允许主服务器链接到列出的服务器。 Here are tutorials of how you can create a linked-server.

一旦您创建了一个链接服务器,您只需创建一个将执行所有 3 个存储过程的作业,如下所示:

EXEC [server1].[database].[schema].[sp_name];
EXEC [server2].[database].[schema].[sp_name];
EXEC [server3].[database].[schema].[sp_name];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2010-12-19
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多