0

SSIS で dts パッケージをデバッグしようとしています。入力変数を渡してカウンターをインクリメントするスクリプト コンポーネント デザイナーがあります。カウンター値を msgbox しようとすると、次のエラーが発生します。

エラー: STAGING1 から STAGING2、STAGING2 で 0xC0202009 [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 を含む行をコメントアウトすると、コードの上記の部分は完全に正常に機能することに注意してください。

4

1 に答える 1

0

これは本当に SSIS 内の DTS タスクですか? 確認するだけです。

もしそうなら、SSIS スクリプト タスクを書き直し、BIDS のブレークポイントを利用することを検討しましたか?

おそらく、SSMS > Management > Legacy から DTS パッケージにアクセスしてみてください。そこからトラブルシューティングを行う必要があります。

于 2009-08-04T22:59:16.303 に答える