我試圖運行一些遠程安裝在數據庫上的SSIS包,我可以訪問數據庫並可以看到SSISDB及其目錄。我遇到的問題是如何最好地執行我在目錄中的項目中的一個包。使用PowerShell遠程運行腳本的SSIS包
我知道DTExec是一個選項,如果我使用invoke-command但不想這樣做,如果可能的話,有時可能會有多個連接,並且在某些具有多次DTExec執行的盒子上看到崩潰。
我已經嘗試從包中獲取執行腳本,並將其放入PowerShell中,並將其用作SQL查詢,但我長期擔心這種方法是如果軟件包發生變化,我需要跟蹤這一點。
我想要的最簡單的解決方案就是按名稱執行軟件包,如果我需要更新比每個軟件包的整個SQL腳本更簡單的名稱。這個更簡單的解決方案是可能的嗎?最好的方法是什麼?到目前爲止,我沒有把這個作爲執行SMO的運氣。我試過的東西是這樣的:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | out-null
$SMOserver = New-Object ('Microsoft.SqlServer.Management.Smo.Server') -argumentlist $Server
#This sets the connection to mixed-mode authentication
$SMOserver.ConnectionContext.LoginSecure=$true
$query = @" this is where my execute SQL goes from the SSIS catalog "@
$db2 = New-Object ('Microsoft.SqlServer.Management.Smo.Database')
$db2 = $SMOserver.Databases[$database]
Write-Host "My Query: $query"
$results2 = $db2.ExecuteNonQuery($query)
Write-Host "Results: " $results2
雖然當我運行這個我經常只是得到一個回報,沒有值。