2010-10-13 22 views
10

सेट करने से पहले मैं खुद को कुछ प्रकार के तनाव से संबंधित दिल का दौरा देता हूं।एसएसआईएस सेट परिणाम डेटा प्रवाह से परिवर्तनीय

क्या कोई भी एक डेटा प्रवाह कार्य के परिणाम सेट को सेट करने के प्रतीत होता है कि कार्य को पूरा करने के लिए प्रतीत होता है (परिणाम या तो 0 या 1 होगा) और उस मान को एक चर के लिए असाइन करना होगा।

मैंने चर को ठीक किया है।

परिणाम सेट एक एक्सएमएल फ़ाइल से कई तत्वों के साथ आता है। ध्वज (0 या 1) उन तत्वों में से एक का परिणाम है, इसलिए मुझे यह जानने की भी आवश्यकता है कि परिणाम सेट को केवल ध्वज के रूप में कैसे प्राप्त किया जाए।

यदि कोई मदद कर सकता है तो मैं वास्तव में इसकी सराहना करता हूं।

अपडेट: मैं अंततः परिणाम (0,1) को ध्वज तालिका में SQL सर्वर पर वापस पढ़ता हूं। फिर SQL सर्वर और एक चर से इसे पढ़ने के लिए SQL SQL स्क्रिप्ट निष्पादित करें। यह सुनिश्चित नहीं है कि यह करने का सबसे अच्छा तरीका है, लेकिन ऐसा लगता है कि यह चाल चल रही है।

उत्तर

9

डेटा प्रवाह कॉलम मान को एक एसएसआईएस चर में स्थानांतरित करने के लिए आप डेटा फ़्लो स्क्रिप्ट घटक का उपयोग कर सकते हैं। हालांकि, डेटा फ़्लो स्क्रिप्ट घटक और एसएसआईएस चर के साथ काम करते समय आपको कुछ नियमों का पालन करना होगा।

एसएसआईएस आपको पंक्तियों को संसाधित करने वाली स्क्रिप्ट प्रक्रिया में एसएसआईएस चर के मानों को असाइन करने की अनुमति नहीं देता है। लेकिन प्री-एंड-निष्पादन प्रक्रियाएं हैं जहां आप असाइनमेंट को संभाल सकते हैं।

अपने स्क्रिप्ट घटक में, एसएसआईएस वैरिएबल को ReadWriteVariables प्रॉपर्टी में जोड़ें। स्क्रिप्ट संपादित करें और स्क्रिप्टमेन क्लास में एक चर घोषित करें। चर प्रारंभ करने के लिए PreExecute प्रक्रिया का प्रयोग करें। स्क्रिप्ट वैरिएबल में इनपुट-बफर कॉलम मान असाइन करने के लिए ProcessInputRow प्रक्रिया का उपयोग करें। और, स्क्रिप्ट चर से मान को एसएसआईएस वैरिएबल में असाइन करने के लिए PostExecute कार्य का उपयोग करें।

यहां एक उदाहरण वीबी स्क्रिप्ट घटक है। इसमें एक एसएसआईएस वैरिएबल (MyOutVariable) है जो स्क्रिप्ट चर (MyVar) का आउटपुट प्राप्त करेगा। MyVar वैरिएबल को डेटा प्रवाह में MyNumber कॉलम से इसका मान मिलता है।

Public Class ScriptMain 
    Inherits UserComponent 

    Dim MyVar As Integer 

    Public Overrides Sub PreExecute() 
     MyBase.PreExecute() 

     'initialize variable local to data flow 
     MyVar = 0 

    End Sub 

    Public Overrides Sub PostExecute() 
     MyBase.PostExecute() 

     ' output variable value to SSIS variable 
     Me.Variables.MyOutVariable = MyVar 

    End Sub 

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 

     ' logic to get value 
     MyVar = Row.MyNumber 

    End Sub 
End Class 
1

लघु उद्योगों 2012 के साथ शुरू, आप आसानी से एक चर एक मूल्य अभिव्यक्ति टास्क का उपयोग कर असाइन कर सकते हैं। एक स्क्रिप्ट लिखने की कोई आवश्यकता नहीं है - जो कि हम में से अधिकांश एक चर के मूल्य को स्थापित करने के एक साधारण सरल कार्य को पूरा करने के लिए सावधान हैं।

उदाहरण के लिए: अगर मैं एक तारीख चर Today कहा जाता है और मैं इसे एक मान देना चाहते हैं, मैं अभिव्यक्ति कार्य में इतनी आसानी से जिन्हें आप नीचे देख कर सकते हैं।

enter image description here

अतिरिक्त पठन: MSDN - SSIS Expression Task Documentation

नोट:(स्वीकार किए जाते हैं जवाब पुरानी है।)

+0

नोट मूल प्रश्न 5 साल पुराना है, पूर्व एसक्यूएल सर्वर 2012 चयनित उत्तर समय पर सही था। – Pixelated

+0

मुझे पता है।मैंने अपने जवाब में उस नोट को छोड़ दिया, ताकि 2016 में इस प्रश्न पर आने वाले किसी भी व्यक्ति ने एसएसआईएस 2012 या> :) – Shiva

+1

@ शिवा - एसएसआईएस 2012 लागू उत्तर अधूरा लगता है - सवाल पूछता है एक डेटा प्रवाह कार्य से प्राप्त मूल्य के साथ एक चर सेट करने के लिए कैसे। हालांकि अभिव्यक्ति कार्य डेटा प्रवाह के भीतर उपलब्ध नहीं है (जबकि स्क्रिप्ट घटक है), इसलिए हमें यह भी जानने की आवश्यकता है कि अभिव्यक्ति कार्य का उपयोग करने के लिए डेटा प्रवाह से डेटा प्रवाह से मूल्य को वापस कैसे प्राप्त किया जाए। – Voysinmyhead

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