0
SQL Server 2008 R2에서 패키지를 개발했습니다. 스크립트 블록을 사용하여 데이터를 변환하고 싶습니다. 하지만 첫 번째 및 마지막 레코드가 삽입되지 않은 오류가 발생하고 무결성 제한을 위반하는 null을 삽입하려고합니다. 아래 VB 스크립트에서 내 코드입니다.문제 : 루프 스크립트 구성 요소의 SSIS 패키지 데이터 변환
<microsoft.sqlserver.dts.pipeline.ssisscriptcomponententrypointattribute()> _
<clscompliant(false)> _
Public Class ScriptMain
Inherits UserComponent
Dim i As Integer = 0
Public Overrides Sub PreExecute()
MyBase.PreExecute()
End Sub
Public Overrides Sub PostExecute()
MyBase.PostExecute()
End Sub
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
i = i + 1
With Output0Buffer
.OrderHeaderID = i
.CustomerNumber = Row.CUSTNO
.OrderNumber = Row.ORDER
.TermsCode = Row.TRMSCD
.TermsDescription = Row.TRMDSC
.TotalLines = Row.TOTLNS
.TotalDollars = Row.TOTDOL
.ComCls = Row.COMCLS
.DropShip = Row.DRPSHP
.DropshipPurchaseOrder = Row.DSPONO
.InvoiceNumber = Row.INVNO
.LstSeq = Row.LSTSEQ
.OrderType = Row.ORDTYP
.PONumber = Row.PONUMB
.ProgramCode = Row.PROGCD
.ProgramDeal = Row.PROGDL
.ProgramName = Row.PRGNAM
.PRONumber = Row.PRONUM
.ReceivedVia = Row.RCVVIA
.StatusMessage = Row.STAMSG
.TermsDescription = Row.TRMDES
.TermsDiscount = Row.TRMDSC
.TruckName = Row.TRKNAM
If IsDate(Row.SHPDAT) Then
.ShipDate = Row.SHPDAT
End If
If IsDate(Row.ORDDAT) Then
.OrderDate = Row.ORDDAT
End If
If IsDate(Row.INVDAT) Then
.InvoiceDate = Row.INVDAT
End If
If IsDate(Row.DATING) Then
.Dating = Row.DATING
End If
If Not Row.INVDAT_IsNull Then
.AddRow()
Else
Exit Sub
End If
End With
End Sub
Public Overrides Sub CreateNewOutputRows()
Output0Buffer.AddRow()
End Sub
End Class
현재 10 개의 행을 삽입하려하지만 오류가 발생합니다. 나를 안내 해줘.
스크립트 구성 요소에서 가져 오는 오류를 게시 할 수 있습니까? 코드를 살펴보면 Sub Input0_ProcessInputRow에서 행 출력을 처리하므로 새 행을 만들지 않거나 만들려하지 않으므로 Sub CreateNewOutputRows()를 재정의 할 필요가 없습니다. 이것이 귀하가 성실성을 침해당하는 이유이기도합니다. – jymbo