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

Я пытаюсь отладить пакет dts в SSIS. У меня есть конструктор компонентов скрипта, где я передаю входные переменные для увеличения счетчика. Когда я пытаюсь установить 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.".

Ниже приведена часть кода в конструкторе компонентов скрипта:

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 Ответ

0 голосов
/ 05 августа 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...