使用脚本组件设计器时出现SSIS 2005错误:“无法从链接服务器的OLE DB提供程序“大容量”中获取行”(null)
我正在尝试调试SSIS中的dts包。我有一个脚本组件设计器,在其中传入输入变量以递增计数器。当我尝试msgbox计数器值时,我得到以下错误 Error: 0xC0202009 at STAGING1 to STAGING2, STAGING2 Destination [1056]: An OLE DB error has occurred. Error code: 0x80040E14. An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E14 Description: "Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".". An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E14 Description: "The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.". An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E14 Description: "Reading from DTS buffer timed out.".使用脚本组件设计器时出现SSIS 2005错误:“无法从链接服务器的OLE DB提供程序“大容量”中获取行”(null),ssis,ssis-2005,Ssis,Ssis 2005,我正在尝试调试SSIS中的dts包。我有一个脚本组件设计器,在其中传入输入变量以递增计数器。当我尝试msgbox计数器值时,我得到以下错误 Error: 0xC0202009 at STAGING1 to STAGING2, STAGING2 Destination [1056]: An OLE DB error has occurred. Error code: 0x80040E14. An OLE DB record is available. Source: "Microsoft SQL
请注意,如果我注释掉包含Msgbox的行,上面的代码部分工作得非常好。这实际上是SSIS中的DTS任务?请确保 如果是这样,您是否考虑过在SSIS脚本任务中重写并利用BIDS中的断点
也许您应该尝试通过SSMS>管理>遗留和故障排除转到DTS包,如果可能的话,从图片中删除出价。是的,Sam,这是一项从ADABAS文件到Oracle的DTS任务,同时在SSIS中维护暂存表和映射环境。我对SSIS比较陌生。我已经提到了断点w我在脚本中还添加了“watch”,包在断点处暂停,但不知怎么的,它似乎没有击中设计脚本。也许我可以检查是否执行您的后一个建议,但我确实需要能够通过应用程序进行调试。
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Public Class ScriptMain
Inherits UserComponent
Dim iCounter As Integer
Dim iCurrentVal As Integer
Dim sCurrentOracleSeq As String
Dim sSeqName As String
Dim sSeqAltProcName As String
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
'
' Add your code here
'
Row.SEQIDNCASE = iCounter + iCurrentVal
iCounter += 1
MsgBox(iCounter + iCurrentVal, MsgBoxStyle.Information, "Input0")
End Sub
Public Overrides Sub PreExecute()
sCurrentOracleSeq = Me.Variables.VSEQIDCurVal
iCurrentVal = CInt(sCurrentOracleSeq)
MsgBox(iCurrentVal, MsgBoxStyle.Information, "No Title")
iCounter = 0
sSeqName = Me.Variables.VSEQIDName
sSeqAltProcName = Me.Variables.VSEQIDAlterProc
End Sub
Public Overrides Sub PostExecute()
Me.Variables.VSEQIDUpdateSQL = "Begin " & sSeqAltProcName & "('" & sSeqName & "'," & (iCounter + iCurrentVal) & "); End;"
End Sub
End Class