我们有 3 个 SQL Server 2012 实例,其中 2 个不是db_owner
. 我们的一些存储过程使用 DMV 和sys
视图以及仅在本地执行时才起作用的存储过程。
我想在我们的主实例中集中执行这些(我们的)存储过程,并从中远程执行这些存储过程。我尝试使用 SQL Server 代理作业,但它需要一些我不习惯的配置,而且可能无论如何都无法访问。
有什么方法可以远程执行存储过程,最好使用链接服务器?
编辑:我们可以使用链接服务器,openrowset
任何可以在简单 SQL 中运行的东西。我宁愿不使用 SSIS,因为这样做会将部分流程与简单的 SQL 分开,并且需要多个平台来运行它。
假设程序位于远程服务器上:您是否尝试过使用 EXECUTE AT 命令?
这就是我过去成功使用的方法。为了以防万一,我通常将 declare/exec 包围在 try catch 中,但它目前每小时都在我的系统上运行。
听起来像是 SSIS 的工作。设置一个 SSIS 包,并使用它
Execute SQL Task
来执行您的存储过程。然后,您可以通过代理作业执行 SSIS 包。我在搜索“在链接服务器上执行过程”时发现了这个线程。但我的要求是运行在多个服务器中可用的相同程序,我想出了以下可能对您或其他用户有帮助的方法:
以更简单的方式回答您的问题:使用 4 部分名称执行远程查询:
Exec ('linkedservername.DBName.dbo.ProcedureName') ;
以下查询可用于在链接服务器(不限于一个)上执行针对中央服务器(运行此脚本的位置)中可用的多个链接服务器的过程: