我可以使用下面的命令从目录中串行执行所有.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
}
答案 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