首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sql server中并行运行多个存储过程

在sql server中并行运行多个存储过程
EN

Stack Overflow用户
提问于 2018-02-15 16:45:00
回答 1查看 2.3K关注 0票数 0

我在sql server中准备一个包含几个步骤的作业。

前3个步骤应该“串行”运行(同步,即不并行),第四个步骤应该触发其他3个存储过程并行运行(同时)。

这3个存储过程称为:

代码语言:javascript
复制
P_ETL_KPI_Fac_DDelivery, 
P_ETL_KPI_Fac_DShipment and 
P_ETL_KPI_Fac_DOrder.

为此,我创建了另外3个存储过程,名为

代码语言:javascript
复制
P_ETL_KPI_Fac_DDelivery_Launch, 
P_ETL_KPI_Fac_DShipment_Launch and 
P_ETL_KPI_Fac_DOrder_Launch

其中我只放入查询以执行存储过程;即在P_ETL_KPI_Fac_DDelivery_Launch中放入exec P_ETL_KPI_Fac_DDelivery

在第4步的工作中,我放入了以下代码:

代码语言:javascript
复制
exec P_ETL_KPI_Fac_DDelivery_Launch
exec P_ETL_KPI_Fac_DShipment_Launch
exec P_ETL_KPI_Fac_DOrder_Launch

我不确定通过这样做,3个存储过程(P_ETL_KPI_Fac_DDelivery、P_ETL_KPI_Fac_DShipment和P_ETL_KPI_Fac_DOrder)是否会并行运行,因为P_ETL_KPI_Fac_DDelivery_Launch将调用P_ETL_KPI_Fac_DDelivery,然后当P_ETL_KPI_Fac_DDelivery完成时,P_ETL_KPI_Fac_DShipment_Launch将运行。

是真的吗?如果是,是否有人可以建议在特定步骤(而不是最后一步)并行运行几个存储过程?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-11-24 09:32:46

您也可以在Powershell中使用ForEach -Parallel。下面的简单示例将运行数据库中的所有存储过程。

https://docs.microsoft.com/en-us/powershell/module/psworkflow/about/about_foreach-parallel?view=powershell-5.1

代码语言:javascript
复制
Workflow TestRunParallelExecute
{
    $ServerName = "localhost"
    $DatabaseName = "testrun"
    $Procedure_Query = "select name from sys.procedures"
    $Procedure_List = (Invoke-Sqlcmd -Server $ServerName -Database $DatabaseName -Query $Procedure_Query)

    ForEach -Parallel ($Procedure in $Procedure_List.Name)
    {
         Invoke-Sqlcmd -Server $ServerName -Database $DatabaseName -Query $Procedure 
    }
}
TestRunParallelExecute
cls

摘自答案:

https://dba.stackexchange.com/questions/223262/powershell-run-stored-procedures-in-parallel-in-database

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48803101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档