我在sql server中准备一个包含几个步骤的作业。
前3个步骤应该“串行”运行(同步,即不并行),第四个步骤应该触发其他3个存储过程并行运行(同时)。
这3个存储过程称为:
P_ETL_KPI_Fac_DDelivery,
P_ETL_KPI_Fac_DShipment and
P_ETL_KPI_Fac_DOrder.为此,我创建了另外3个存储过程,名为
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步的工作中,我放入了以下代码:
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将运行。
是真的吗?如果是,是否有人可以建议在特定步骤(而不是最后一步)并行运行几个存储过程?
提前感谢
发布于 2018-11-24 09:32:46
您也可以在Powershell中使用ForEach -Parallel。下面的简单示例将运行数据库中的所有存储过程。
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://stackoverflow.com/questions/48803101
复制相似问题