2010-02-17 16 views
7

पर लिखें यह SQL 2005 के साथ है।एसएसआईएस स्क्रिप्ट घटक वैरिएबल

मेरे पास डेटा फ़्लो टास्क के अंदर एक स्क्रिप्ट घटक है। मैं इनपुट कॉलम से पढ़ना चाहता हूं और डेटा को वैश्विक उपयोगकर्ता चर में लिखना चाहता हूं।

मैंने अपने इनपुट कॉलम सेट किए हैं और स्क्रिप्ट घटक गुणों के लिए ReadWriteVariable के रूप में अपना वैश्विक उपयोगकर्ता चर जोड़ा है।

यहां मेरा कोड है, मैं बस वैश्विक उपयोगकर्ता चर के मूल्य को बदलने की कोशिश कर रहा हूं, लेकिन यह काम नहीं कर रहा है।

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

उत्तर

7

मैंने इसे समझ लिया।

एमएस से:

स्क्रिप्ट घटक कोड में, आप इस तरह के चर और कनेक्शन प्रबंधक के रूप में निश्चित पैकेज सुविधाओं का उपयोग करने टाइप एक्सेसर गुण का उपयोग करें।

प्रीएक्सक्यूट विधि केवल केवल-पढ़ने योग्य चर तक पहुंच सकती है। PostExecute विधि केवल पढ़ने-योग्य और पढ़ने/लिखने योग्य चर दोनों तक पहुंच सकता है।

इन विधियों के बारे में अधिक जानकारी के लिए, स्क्रिप्ट घटक को कोडिंग और डिबगिंग देखें।

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

यह डीटीएस की तरह लग रहा स्क्रिप्ट कार्य में ही उपलब्ध है।

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

, आप ओवररेड्स के साथ PostExecute नामक एक फ़ंक्शन घोषित नहीं कर सकते हैं। – terenf

1

उपयोग

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

और:

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 

मैं भी कोई भाग्य के साथ की कोशिश की है: जब मैं किसी अन्य कार्य में चर के मूल्य को लिखने यह अभी भी उसके डिफ़ॉल्ट मान है SQL_ATTR_Update को वैश्विक स्क्रिप्ट होने की आवश्यकता है और उस स्क्रिप्ट कार्य के लिए आपके ReadWriteVariables में सूचीबद्ध है।

+0

जब मैं डीटीएस जोड़ने यह कहता है हालांकि मैं एक स्क्रिप्ट कार्य में डीटीएस जुर्माना का उपयोग कर सकता हूं, लेकिन एक घटक नहीं। – MaxGeek

+0

आह, मैंने उस "घटक" बिंदु को याद किया। – thursdaysgeek

+0

डीटीएस। वैरिएबल केवल नियंत्रण प्रवाह में उजागर होता है। डेटा प्रवाह में आपको यह करना होगा। वैरिएबल फ़ील्ड। एसएसआईएस 2008 में –

4

यहाँ कैसे आप यह कर सकता है:

यहाँ कोड कैसा दिखाई देता है कि "। नाम 'डीटीएस' घोषित नहीं किया गया है" http://microsoft-ssis.blogspot.com/2011/01/how-to-use-variables-in-script.html

+0

यह सही उत्तर है। जब आप स्रोत घटक के रूप में स्क्रिप्ट घटक का उपयोग करते हैं तो यह बहुत महत्वपूर्ण हो जाता है। –

संबंधित मुद्दे