2009-08-04 6 views
0

Je suis en train de déboguer un package dts dans SSIS. Je passe dans les variables d'entrée pour incrémenter un compteur Lorsque je tente de MSGBOX la valeur du compteur, je reçois l'erreur suivanteSSIS 2005 Erreur lors de l'utilisation du composant de script Designer: "Impossible de récupérer une ligne du fournisseur OLE DB" BULK "pour le serveur lié" (null) "

 
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.". 

est inférieure à la partie du code dans le concepteur de composants de script:..

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 

Notez que la partie ci-dessus du code fonctionne parfaitement bien si je commente les lignes a Msgbox.

Répondre

0

Ceci est vraiment une tâche DTS dans un SSIS? Juste pour être sûr.

Si oui, avez-vous envisagé de réécrire dans la tâche de script SSIS et de tirer parti des points d'arrêt dans BIDS? Peut-être que vous devriez essayer d'aller au paquet DTS via SSMS> Management> Legacy et dépannage à partir de là - sortez BIDS de l'image si possible.

+0

Yeah Sam, Il s'agit d'une tâche DTS des fichiers ADABAS vers Oracle tout en conservant les tables de transfert et l'environnement de mappage dans SSIS. Je suis relativement nouveau à SSIS. J'ai mentionné les points d'arrêt dans le script et ajouté "watch" et le paquet s'arrête aux points d'arrêt mais d'une manière ou d'une autre il ne semble pas frapper le script de conception. Peut-être que je peux vérifier votre dernière suggestion, mais j'ai vraiment besoin de pouvoir déboguer à travers l'application. –

Questions connexes