sp_procoption没有使用OPENQUERY执行存储过程

时间:2015-07-03 19:32:14

标签: sql-server stored-procedures openquery

使用sp_procoption它成功执行存储过程“MyBackgroundTask”

   sp_procoption    @ProcName = 'MyBackgroundTask',
            @OptionName = 'startup',
            @OptionValue = 'on'

在主数据库上,实习生调用我的数据库中的存储过程

   use master 

   CREATE PROCEDURE MyBackgroundTask
   AS
   BEGIN

     /*
     .
     .
     .

     */

     execute [MyDatabaseName].[dbo].[MyDatabaseStoredProcedure]; 

   END;

除非MyDatabseStoredProcedure包含链接服务器上的查询

,否则此工作正常
  Insert Into [LOCALTABLE] (id, name)
  Select    id, name
  from OPENQUERY(LINKED_SERVER, 'SELECT * FROM RemoteDB.RemoteTable') 

为什么上面的代码行不起作用?

reference

1 个答案:

答案 0 :(得分:1)

这很简单。在建立与链接服务器的连接之前触发启动过程。因此,您不能在存储过程中使用链接服务器作为启动过程。

一个建议可能是生成一个SQL Server代理作业,该作业将由您的过程生成并具有一个小的等待计时器。它将在启动后执行几秒/分钟,并在执行后自行删除。这可能是一种解决方案,但如果您的代理在重新启动后无法启动,则可能会失败。