2010-02-17 16 views
7

Bu, SQL 2005'le geçerlidir.SSIS Komut Dosyası Bileşeni Değişken'e Yaz

Veri Akış Görevinin içinde bir komut dosyası bileşenim var. Giriş sütunlarından okumak ve verileri global bir kullanıcı değişkenine yazmak istiyorum.

Giriş sütunlarımı oluşturdum ve genel kullanıcı değişkenimi komut dosyası bileşeni özelliklerine ReadWriteVariable olarak ekledim.

İşte benim kodum, burada sadece global kullanıcı değişkeninin değerini değiştirmeye çalışıyorum, fakat çalışmıyor.

Me.ReadWriteVariables("SQL_ATTR_Update").Value = "Test" 

cevap

7

Bunu çözdüm. MS itibaren

: Script bileşeni kodunda

, bu tür değişkenleri ve bağlantı yöneticileri olarak belirli paket özelliklere erişmek için Yazılan erişimci özelliklerini kullanırlar.

PreExecute yöntemi yalnızca salt okunur değişkenlere erişebilir. PostExecute yöntemi, salt okunur ve okuma/yazma değişkenlerine erişebilir.

Bu yöntemleri hakkında daha fazla bilgi için, bkz. Komut Dosyası Bileşenini Kodlama ve Hata Ayıklama. Bu, Dts benziyor

http://msdn.microsoft.com/en-us/library/ms136031.aspx

Script görev içinde kullanılabilir.

İşte
Imports System 
Imports System.Data 
Imports System.Math 
Imports Microsoft.SqlServer.Dts.Runtime 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper 

Public Class ScriptMain 
    Inherits UserComponent 
    Dim updateSQL As String 


    Public Overrides Sub PostExecute() 
     Me.ReadWriteVariables("SQL_ATTR_Update").Value = "Test" 
    End Sub 

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
     'updateSQL = Row.ITMID + Row.PRCCAT 
    End Sub 

End Class 
+0

, Geçersiz Kılmalar ile PostExecute adlı bir işlevi bildiremezsiniz. – terenf

1

Kullanım

Dts.Variables("SQL_ATTR_Update").Value = "Test" 

Ve:

Imports System 
Imports System.Data 
Imports System.Math 
Imports Microsoft.SqlServer.Dts.Runtime 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper 

Public Class ScriptMain 
    Inherits UserComponent 
    Dim updateSQL As String 

    Public Sub Main() 
     Dim vars As IDTSVariables90 

     VariableDispenser.LockOneForWrite("SQL_ATTR_Update", vars) 
     vars("SQL_ATTR_Update").Value = "Test" 
     vars.Unlock() 
    End Sub 


    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
     'updateSQL = Row.ITMID + Row.PRCCAT 
    End Sub 

End Class 

Ben de hiçbir şans ile denedim: Başka bir görevde değişkenin değerini dışarı yazarken hala varsayılan değeri vardır SQL_ATTR_Update'in genel bir değişken olması ve bu komut dosyası görevi için ReadWriteVariables'ınızda listelenmesi gerekir.

+0

diyor Dts fine komutunu Script Görevinde kullanabilirim, ancak bir bileşen kullanamıyorum. – MaxGeek

+0

Ah, "bileşen" noktasını kaçırdım. – thursdaysgeek

+0

Dts.Variables yalnızca bir kontrol akışında açığa çıkar. Bir veri akışında size bu.Variables alanına sahip olursunuz. SSIS 2008'de –

İlgili konular