gpt4 book ai didi

.net - DTS脚本任务运行时错误: Exception has been thrown by the target of an invocation

转载 作者:行者123 更新时间:2023-12-02 03:27:25 25 4
gpt4 key购买 nike

我有一个在 vs 2012 Ultimate 中开发的 ssis 项目。我使用项目部署模型,并将项目设置为在 32 位模式下运行。该包在我的开发环境中执行时没有错误,但是当我将其部署到 ssis 目录并尝试在那里运行它时,出现以下错误:

error dialog

我将项目部署到 Windows Server 2012 R2,数据库也是 2012,带有 SSIS 目录。

我已在服务器上打开该项目,并尝试使用断点在服务器上调试脚本任务,但在到达断点之前发生了错误。

如果我禁用所有脚本任务,包在服务器上执行时不会出现错误。

我还通过禁用系统加密:使用符合 FIPS 的算法来更新服务器本地安全选项,作为发布在 Microsoft Support 上的可能解决方案.

我还尝试在服务器上作为文件系统包运行,但遇到了相同的错误。

我还三次检查我的变量是否正确,甚至将它们设置为读写变量。

第一个脚本任务代码如下(但所有脚本任务都失败/此包中的三个)。该脚本任务引用了一个名为 UHS.IntegrationServices.CommonUtils 的 dll,该 dll 已通过 GAC 处理,并且该 dll 是在 VS 2005 中使用框架 2.0.50727 构建的。

Public Sub Main()

Dim packageID As String = Dts.Variables("System::PackageID").Value.ToString()
Dim strInterfaceName As String = Dts.Variables("System::PackageName").Value.ToString()
Dim strConfigConnectionString1 As String = Dts.Variables("User::UHS_SSIS_CNXN_STR_CONFIG").Value.ToString()
Dim myConnection As OleDb.OleDbConnection = New OleDb.OleDbConnection
Dim mySqlCommand As OleDb.OleDbCommand = New OleDb.OleDbCommand
Dim myReader As OleDb.OleDbDataReader = Nothing
Dim rowsProcessed As Integer = 0

Try
myConnection.ConnectionString = strConfigConnectionString1
myConnection.Open()

Dim getEmailQuery As String = "SELECT Email FROM EmailMaster" & _
" where InterfaceName='" & strInterfaceName & "'" & _
" and Active = 'Y' "

Dim NotifyInterface As SMTPNotifyAlerts
NotifyListenerManager.GetNotifierByType(packageID, NotifyInterface, CommonNotifierAlerts.AlertInfo.AlertTypes.alertEmail)


mySqlCommand = New OleDb.OleDbCommand(getEmailQuery, myConnection)
mySqlCommand.CommandTimeout = 0
myReader = mySqlCommand.ExecuteReader

If (myReader.HasRows()) Then
While (myReader.Read())
NotifyInterface.alertDest.Add(myReader("Email").ToString().Trim())
rowsProcessed = rowsProcessed + 1
End While
End If

NotifyListenerManager.BroadcastMessage(CommonNotifierAlerts.BasicAlerts, 0, Nothing, "Startup logfile")
Dts.TaskResult = ScriptResults.Success
Catch ex As Exception
Dts.Events.FireError(0, "Init Email Master", ex.Message, "", 0)
Dts.TaskResult = ScriptResults.Failure
End Try

End Sub

问题似乎出在对 dll 的引用中。当我注释掉 NotifyInterface 和 NotifyListener 行时,脚本执行时没有错误,但 dll 位于 GAC 中,我可以在 C:\Windows\assembly 中查看它。

为什么这可以在我的本地而不是服务器上工作?服务器上需要2.0框架吗?如果对 dll 的引用被破坏,我是否应该得到更具描述性的错误?

任何有关寻找故障排除想法的帮助将不胜感激。

最佳答案

您需要在第一个脚本任务开始时设置断点,就像在任何 VB 调试情况下所做的那样。然后按 F8 浏览每一行代码,直到抛出错误。

关于.net - DTS脚本任务运行时错误: Exception has been thrown by the target of an invocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24642603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com