Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于跨多台服务器从代码隐藏执行SQL作业代理的建议_C#_Asp.net_Sql_Stored Procedures_Sql Agent Job - Fatal编程技术网

C# 关于跨多台服务器从代码隐藏执行SQL作业代理的建议

C# 关于跨多台服务器从代码隐藏执行SQL作业代理的建议,c#,asp.net,sql,stored-procedures,sql-agent-job,C#,Asp.net,Sql,Stored Procedures,Sql Agent Job,因此,我有一份工作,在全国7台不同服务器上的7个不同DB上运行。该作业不是计划作业,因为我们无法预测何时需要每月或每隔一个月运行一次,或在哪个月的哪个日期等。过去,客户端VPN连接到每个服务器,然后登录到每个数据库,然后手动启动作业。每个作业有7个步骤,每个步骤将大量数据导出到excel文件中,以便稍后导入到只接受excel数据的专有软件中。有点糟糕,但事情总是这样。我无法在作业开始后更改任何步骤,但我可以通过消除7个不同VPN连接和7个服务器登录等带来的一些初始压力来帮助简化工作 我在C/.N

因此,我有一份工作,在全国7台不同服务器上的7个不同DB上运行。该作业不是计划作业,因为我们无法预测何时需要每月或每隔一个月运行一次,或在哪个月的哪个日期等。过去,客户端VPN连接到每个服务器,然后登录到每个数据库,然后手动启动作业。每个作业有7个步骤,每个步骤将大量数据导出到excel文件中,以便稍后导入到只接受excel数据的专有软件中。有点糟糕,但事情总是这样。我无法在作业开始后更改任何步骤,但我可以通过消除7个不同VPN连接和7个服务器登录等带来的一些初始压力来帮助简化工作

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

我正在寻求关于完成这项任务的最佳方法的建议。我可以只写一个proc,然后把它放到每台服务器上,然后根据web应用程序下拉列表中选择的服务器,它会在该服务器上启动proc来启动作业吗?这似乎很容易,而且在权限问题不大的情况下,它完全可以做到这一点


非常感谢您的建议。

假设这是SQL server,您要查找的语法是:

EXEC[msdb].[dbo].[sp_start_job]“要启动的作业的名称”

只要您对存储过程具有执行权限,就不需要其他任何东西。 您可以从.net代码运行此操作,也可以创建链接服务器,并为每台服务器启动一个过程。在本例中,代码略有更改,以包括链接的服务器名称:

EXEC[链接服务器名称].[msdb].[dbo].[sp_start_job]“要启动的作业的名称”