我編寫了以下PowerShell腳本來運行SP列表。當我運行它時,在第一次運行後沒有給出正確的結果,但是當我單獨運行它們時,所有它們都作爲第一次運行。PowerShell運行陣列中的存儲過程
$Sps = "test_sp_HasPaidOrder",
"test_sp_HasPaidBKMOrder",
"test_sp_HasPaidCreditCardOrder"
foreach ($sp in $Sps)
{
$sp_name = $sp
echo "- - - $sp_name - - - "
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=server_adres;Database=db_name;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandType = [System.Data.CommandType]::StoredProcedure
$SqlCmd.CommandText = $sp_name
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables
}
結果:
PS C:\Users\mesut.gunes\Documents\scripts> .\run_sp1.ps1
- - - test_sp_HasPaidOrder - - -
1
HasPaidOrder
------------
True
- - - test_sp_HasPaidBKMOrder - - -
1
- - - test_sp_HasPaidCreditCardOrder - - -
1
我也試過$SqlAdapter.Fill($DataSet)
之後添加Start-Sleep -s 3
處理並行執行,但不解決它。如何解決這個問題?
我沒有SQL環境來測試這個。但是,您可以嘗試使用「工作流{ForEach -Parallel(...){...}}」。你可以參考這個鏈接的更多細節:[ForEach並行](https://technet.microsoft.com/en-us/library/jj713711.aspx) – SavindraSingh
@SavindraSingh它不需要平行,我只是想得到PS的結果。 –
恕我直言,它看起來像格式問題。試試'$ DataSet.Tables | OUT-Default'。 – PetSerAl