启动多个存储过程以在 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 存储过程传参问题. 一个参数如何可以输入多个参数值