启动多个存储过程以在 SQL Server Express Edition 上“在后台”运行

Posted

技术标签:

【中文标题】启动多个存储过程以在 SQL Server Express Edition 上“在后台”运行【英文标题】:Launch multiple stored procedures to run 'in the background' on 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

【问题讨论】:

【参考方案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

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

【讨论】:

以上是关于启动多个存储过程以在 SQL Server Express Edition 上“在后台”运行的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SQL Server 存储过程迁移到 Mysql [关闭]

sql server 存储过程传参问题. 一个参数如何可以输入多个参数值

SQL Server:在存储过程中的变量中存储多个值

在 SQL Server 2005 中生成多个 SQL 任务

在一个事务中调用多个 SQL Server 存储过程

用于多个 excel 文件加载的 SQL Server 存储过程 [关闭]