【问题标题】:Launch multiple stored procedures to run 'in the background' on SQL Server Express Edition启动多个存储过程以在 SQL Server Express Edition 上“在后台”运行
【发布时间】:2009-11-05 16:43:07
【问题描述】:

是否可以运行多个“在后台”运行的存储过程?

存储过程必须从单个主存储过程启动,就像产生多个工作线程一样。例如:

CREATE PROCEDURE MyLauncher
AS
BEGIN
    BEGIN
      @EXEC MyBackgroundSP01 -- Runs in parallel to the other 2
      @EXEC MyBackgroundSP02 -- Runs in parallel to the other 2
      @EXEC MyBackgroundSP03 -- Runs in parallel to the other 2
    END
END

【问题讨论】:

    标签: sql sql-server concurrency background sql-server-express


    【解决方案1】:

    在 SQL 2005 及更高版本中是可能的。看看http://rusanu.com/2009/08/05/asynchronous-procedure-execution/

    【讨论】:

      【解决方案2】:

      不,正如您所描述的那样,这是不可能的。您可以运行多个 SQL 作业,它们将同时执行这些过程/

      【讨论】:

      • 程序必须在MS SQL Express Edition上运行,所以不能使用Jobs。我将修改问题以提及这一点。
      • 什么调用程序?为什么不让调用者处理线程?
      • SQL Server 在启动时调用该过程。我总是可以通过让 SQL Server 单独调用这些过程来解决这个问题,但我想我会检查是否有更优雅的方法。我有一种感觉,我正在尝试做一些会破坏事务 ACID 原则的事情 8)
      • Express 可以直接使用 T-SQL:rusanu.com/2009/08/05/asynchronous-procedure-execution
      【解决方案3】:

      根据这个问题,您可以尝试使用 Service Broker

      Asynchronous Stored Procedure Calls

      【讨论】:

        【解决方案4】:

        如果你在同一个过程中运行它们,它将在同一个线程中启动(并且在同一个内部事务中,什么会使日志变得非常大)。

        【讨论】:

          【解决方案5】:

          不使用纯 T-SQL。但是您可以编写一个小的 dotNET 应用程序来轻松地异步运行它们,只要您保留连接选项,直到所有三个都完成。

          【讨论】:

            【解决方案6】:

            如果两个存储过程具有相同的参数,那么您可以创建一个新的存储过程 喜欢

            create third procedure
            (@colname int)
            as
             begin
            
            exec first procedure
            exec second procedure
            end
            
            exec third procedure
            

            你可以试试。我确信它是多么合适。

            【讨论】:

              猜你喜欢
              • 2010-12-13
              • 2012-03-24
              • 1970-01-01
              • 1970-01-01
              • 2012-10-13
              • 1970-01-01
              • 2010-09-22
              • 2016-10-21
              • 1970-01-01
              相关资源
              最近更新 更多