我试图运行一些远程安装在数据库上的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
虽然当我运行这个我经常只是得到一个回报,没有值。