我写了一个 SSIS 2017 包,它使用 SMO(sql server 管理对象)将我的灾难恢复 (DR) 服务器与我的生产服务器同步。两台服务器都是 2017 年。该程序包使用我的网络登录在 Visual Studio 2017 (SSDT) 的 DR 服务器上运行良好,但在作为 sql 代理作业从 DR 服务器运行时失败并出现此错误:
脚本任务:错误:调用目标抛出异常。
我已经尝试使用代理和我的网络登录来运行 sql 代理作业,但仍然收到错误。将代码块包装在 Try/Catch 中并不会产生更好的错误消息。我能够从 DR 服务器上的 sql 代理作业中的 powershell 脚本使用 SMO 成功连接。示例代码:
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$serverInstance = New-Object ('Microsoft.SqlServer.Management.Smo.Server') Server1
脚本任务其他详情:
目标服务器版本:SQL Server 2017
目标框架:.Net Framework 4.5 (服务器有4.6.2)
参考资料:
代码:
Imports Microsoft.SqlServer.Management.Smo
Dim smoSourceServer As Server = New Server("Server1")
非常感谢任何关于尝试使这项工作的帮助或想法!
我在这里面临同样的问题。因此,SSIS 包(脚本任务,VB)在直接从 Visual Studio 运行时工作正常,但在应用程序服务器(SSIS 所在的位置)上使用 sql server 代理运行包时失败。
当我们将应用程序服务器(同样,SSIS 所在的位置,运行包与单独的数据库服务器)从 Windows Server 2012 升级到 Windows Server 2016 时,它开始发生。在此之前,无论我们如何运行它(sql server 代理或手动),它都运行良好.
SSIS 版本为 SQL Server 2016, service pack 3.
脚本任务(VB)项目中的目标.NET框架是4.0,但我也尝试用4.5、4.6和4.7测试它,但没有成功。
这是脚本任务代码的相关片段:
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
......
Dim srv As Server
Dim connString As String
connString = Dts.Connections("ConnMgrName").ConnectionString.ToString
Using MyConn As New OleDbConnection(connString)
MyConn.Open()
'This is where it fails:
srv = New Server(MyConn.DataSource)
你找到解决办法了吗?
谢谢, 埃德