从目录并行执行SQL

时间:2018-02-04 17:04:54

标签: multithreading powershell tsql

我可以使用下面的命令从目录中串行执行所有.SQL文件到服务器。但是,我们希望并行执行所有这些文件。

我的串行执行代码 -

$PSScriptRoot = 'Y:\test\'

$ServerName = $env:COMPUTERNAME 


foreach ($f in Get-ChildItem -path $PSScriptRoot -Filter *.sql | sort-object 
-desc ) 
{ 
 invoke-sqlcmd -InputFile $f.fullname -ServerInstance $ServerName 
} 

1 个答案:

答案 0 :(得分:1)

您可以使用作业让它们在后台执行:

foreach ($f in Get-ChildItem -path $PSScriptRoot -Filter *.sql | sort-object 
-desc) 
{ 
    Start-Job -ScriptBlock { invoke-sqlcmd -InputFile $args[0].fullname -ServerInstance $args[1] } -ArgumentList $f, $ServerName
} 

如果有任何输出,您可以通过以下方式收集:

Get-Job | Wait-Job | Receive-Job