Ошибка служб SSIS 2005 при использовании конструктора компонента сценария: "Невозможно извлечь строку из поставщика OLE DB"BULK"для связанного сервера"(null)"

Я пытаюсь отладить пакет dts в SSIS. У меня есть конструктор компонентов скрипта, где я передаю входные переменные для увеличения счетчика. Когда я пытаюсь установить msgbox значение счетчика, я получаю следующую ошибку.

Ошибка: 0xC0202009 от STAGING1 до STAGING2, STAGING2 Назначение [1056]: Произошла ошибка OLE DB. Код ошибки: 0x80040E14.
Доступна запись OLE DB. Источник: "Собственный клиент Microsoft SQL". Hresult: 0x80040E14 Описание: "Невозможно получить строку из поставщика OLE DB"BULK"для связанного сервера"(null)".".
Доступна запись OLE DB. Источник: "Собственный клиент Microsoft SQL". Результат: 0x80040E14 Описание: "Поставщик OLE DB"BULK"для связанного сервера" (null) "сообщил об ошибке. Поставщик не предоставил никакой информации об ошибке.".
Доступна запись OLE DB. Источник: "Собственный клиент Microsoft SQL". Результат: 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.

1 ответ

Это действительно задача DTS в SSIS? Просто убеждаюсь.

Если да, рассматривали ли вы возможность переписывания в сценарии SSIS и использования точек останова в BIDS?

Возможно, вам следует попробовать перейти к пакету DTS через SSMS > Управление> Устаревший и устранить неполадки оттуда - по возможности уберите BIDS из картины.

Другие вопросы по тегам