【问题标题】:sp_procoption is not executing stored procedure with OPENQUERYsp_procoption 未使用 OPENQUERY 执行存储过程
【发布时间】:2015-09-21 16:08:07
【问题描述】:

使用 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

【问题讨论】:

    标签: sql-server stored-procedures openquery


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多