【问题标题】:SSIS 2005 Error while using script component Designer: "Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)"使用脚本组件设计器时出现 SSIS 2005 错误:“无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”获取行
【发布时间】:2009-08-04 18:51:15
【问题描述】:

我正在尝试在 SSIS 中调试 dts 包。我有一个脚本组件设计器,我在其中传入输入变量以递增计数器。当我尝试 msgbox 计数器值时,我收到以下错误。

错误:0xC0202009 在 STAGING1 到 STAGING2,STAGING2 目标 [1056]:发生 OLE DB 错误。错误代码:0x80040E14。 OLE DB 记录可用。来源:“Microsoft SQL Native Client”Hresult:0x80040E14 描述:“无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”获取一行。”。 OLE DB 记录可用。来源:“Microsoft SQL Native Client”Hresult:0x80040E14 描述:“链接服务器“(null)”的 OLE DB 提供程序“BULK”报告了错误。提供程序没有提供有关该错误的任何信息。”。 OLE DB 记录可用。来源:“Microsoft SQL Native Client”Hresult:0x80040E14 描述:“从 DTS 缓冲区读取超时。”。

以下是脚本组件设计器中的部分代码:

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

请注意,如果我注释掉包含 Msgbox 的行,上述部分代码可以正常工作。

【问题讨论】:

    标签: ssis ssis-2005


    【解决方案1】:

    这真的是 SSIS 中的 DTS 任务吗?只是确保。

    如果是这样,您是否考虑过在 SSIS 脚本任务中重写并利用 BIDS 中的断点?

    也许您应该尝试通过 SSMS > 管理 > 旧版和故障排除进入 DTS 包 - 如果可能,请不要考虑 BIDS。

    【讨论】:

    • 是的 Sam,这是从 ADABAS 文件到 Oracle 的 DTS 任务,同时在 SSIS 中维护临时表和映射环境。我对 SSIS 比较陌生。我已经在脚本中提到了断点,还添加了“watch”,并且包在断点处暂停,但不知何故它似乎没有命中设计脚本。也许我可以检查你的后一个建议,但我确实需要能够通过应用程序进行调试。
    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多