关于跨多个服务器从Code Behind执行SQL作业代理的建议

时间:2012-12-27 22:28:06

标签: c# asp.net sql stored-procedures sql-agent-job

所以我在全国7个不同的服务器上运行7个不同的DB。这项工作不是预定的工作,因为我们无法预测何时需要每个月或每隔一个月运行,或者在哪个月的哪个日期等等。过去客户端VPN到每个服务器,然后登录到每个数据库然后手动启动作业。每个作业都有7个步骤,每个步骤将大量数据导出到excel文件,以便以后导入到只接受Excel数据的专有软件。有点糟糕,但这是它一直以来的方式。我无法在作业开始后更改任何步骤,但我可以通过删除7个不同VPN连接的一些初始压力以及7个以上的服务器登录等来帮助简化操作。

我在C#/ .Net中创建了一个简单的Web应用程序,允许用户选择哪个服务器,然后点击开始按钮,然后以某种方式从后面的代码启动sql作业。由于我可以将此应用程序放在中央服务器上,因此不需要单独的VPN登录或数据库登录。所有用户必须做的是登录Web应用程序以解雇所有内容。我找到了我试过的引用,让我解雇了可以登录服务器并通过C#直接访问来启动作业的代码。然而,在所有权限问题和其他错误之间,我觉得这是一个可怕的方向。我发现一些引用说我可以执行一些存储过程,它会触发每个服务器上的作业,这似乎是最简单的方向。

我正在寻找有关完成此任务的最佳方法的建议。我可以只编写一个proc然后将其删除到每个服务器上,然后根据在Web应用程序的下拉列表中选择的服务器,它将在该服务器上触发proc以启动该作业吗?这看起来很容易,并且能够解决很少的权限问题。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

假设这是SQL服务器,您要查找的语法是:

  

EXEC [msdb]。[dbo]。[sp_start_job]'要开始的工作的名称'

只要您对存储过程具有执行权限,就不需要任何其他内容 您可以从.net代码运行它,也可以创建链接服务器并为每个服务器启动一个过程。在这种情况下,代码稍有变化,包括链接服务器名称:

  

EXEC [链接服务器名称]。[msdb]。[dbo]。[sp_start_job]'要启动的作业名称'

相关问题