tho*_*der 5 sql-server-2005 sql-server sql-server-agent
我需要从 sql server 2005 实例(本地服务器)在 150 多个 sql server 实例(sql server 2000,远程)上手动运行作业。所有这些实例的工作都是一样的。作业只是调用一个没有参数的存储过程,这在所有实例中也是一样的。这些工作按计划进行。但是现在他们希望我根据请求为所有实例或指定实例手动运行作业。
这方面的最佳做法是什么?我试过 openrowset 来调用远程存储过程。但是每次运行作业都需要几分钟,所以如果我使用循环来运行所有这些作业,它将一个接一个地运行,这是很长的时间。理想情况下,它应该能够在每个实例上运行存储过程,而无需等待它完成。更理想的是,它应该能够在每个实例上运行作业而无需等待它完成,因此它可以在每个实例的作业历史记录中留下记录。
并且存储过程来自第三方,因此无法更改。
更新:
由于“人们”要求从 SSRS 报告中对其进行初始化,因此使用 SSRS 在服务器上调用一些 T-SQL/proc 是最合适的。我现在遇到的问题是,在使用 OPENQUERY 或 OPENROWSET 从本地服务器调用远程 SQL Server 2000 实例上的 msdb.dbo.sp_start_job 时,我遇到了无法跟随错误。
处理对象“exec msdb.dbo.sp_start_job @job_name = 'xxx'”。链接服务器“xxx”的 OLE DB 提供程序“SQLNCLI”指示对象没有列或当前用户没有该对象的权限。
我想这可能是因为 sp_start_job 不返回任何内容,因为我可以使用 OPENQUERY/OPENROWSET 调用其他远程 proc 没有问题。那么有什么解决方法吗?
更新:
我发现它在 t-sql 中实际上非常简单。
EXEC [linkedServerName].msdb.dbo.sp_start_job @job_name = 'test2'
所以我不需要使用 OPENROWSET/OPENQUERY atually 因为所有远程 SQL Server 2000 实例都已添加为远程服务器。