SSIS 2008 पैकेज कॉन्फ़िगरेशन पर ध्यान नहीं दिया जा रहा है


10

2005 की तुलना में 2008 में पैकेज कॉन्फ़िगरेशन में परिवर्तन के साथ जब मैं कुछ निर्दिष्ट / कॉन्फ़िगर करता हूं कमांड लाइन पर कॉन्फ़िगर करें। पैकेज में परिभाषित चर, कॉन्फ़िगरेशन फ़ाइल से सेटिंग्स का उपयोग करने के बजाय उनके डिज़ाइन-टाइम मान रख रहे हैं।

मुझे पूरा यकीन नहीं है कि मुझे समझ में आ रहा है कि बाहरी कॉन्फिगर फाइल को कैसे इस्तेमाल किया जाए। मैंने उन लेखों को पढ़ा है जो कहते हैं कि केवल डिज़ाइन-टाइम कॉन्फ़िगरेशन जो सेट किए गए हैं, बाहरी फ़ाइल के लोड को अधिलेखित कर देंगे। क्या इसका मतलब है कि मैं चर को रिक्त तारों में बदल सकता हूं और फिर वे अधिलेखित हो जाएंगे? मैं चर को पूरी तरह से हटा नहीं सकता! पूर्णांक के बारे में क्या?

मैंने उन लेखों को देखा है जो पैकेज में पैकेज कॉन्फ़िगरेशन का उपयोग करके बंद करने का उल्लेख करते हैं।

मैं पैकेज में कॉन्फ़िगरेशन फ़ाइल पथ को बदलने के लिए SSIS पैकेज संपादक या XML संपादक का उपयोग कर सकता हूं, और फिर यह उस फ़ाइल की सेटिंग्स "अंतिम" (बाहरी / कॉन्फ़िगाइल विकल्प की परवाह किए बिना) का उपयोग करेगा, लेकिन मैं नहीं बनना चाहता पैकेज बदल रहा है। मैं Test.dtsConfig और Production.dtsConfig के साथ एक पैकेज चाहता हूं और पैकेज को बदले बिना आगे और पीछे स्वैप करने में सक्षम हो सकता हूं।

अब इसे करने का अनुशंसित तरीका क्या है?


1
आप अपने राहत मिल सकती है यहाँ SQLServerCentral मंच पर,। व्यवहार परिवर्तन के कुछ विवरण यहां दिए गए हैं - खंड व्यवहार पैकेज विन्यास से संबंधित परिवर्तन।
मैरियन

कृपया निम्न फ़ाइलों को देखें, जो पैकेज और कॉन्फिगरेशन के बारे में विचार कर रहे हैं जिनके बारे में मैं बात कर रहा हूं: कॉन्फिग और बैच , टेस्ट पैकेज और रीडमी
मैरियन

जवाबों:


10

आपको इस बात का ध्यान रखना चाहिए कि जब BIDS द्वारा रन किया जा रहा है तो पैकेज कॉन्फिगर फाइल से पहले वैरिएबल वैल्यू लेगा, और केवल अगर कॉन्फिग फाइल मौजूद नहीं है, तो यह एक चेतावनी को फेंक देगा और वैल्यू को पैकेज से लिया जाएगा।

अब, कमांड लाइन की स्थिति थोड़ी अलग है। आपके पास निम्न स्थितियाँ हो सकती हैं:

  1. cmd लाइन में पैकेज को बिना किसी कॉन्फिगर फाइल के चलाएं:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • यदि मूल कॉन्फ़िगर फ़ाइल (इसे नाम दें प्रोडक्ट) पैकेज के मेटाडेटा में परिभाषित उसी पथ में मौजूद नहीं है, तो पैकेज के अंदर से मानों का उपयोग किया जाता है और आपको बस एक चेतावनी मिलेगी कि कॉन्फ़िगरेशन फ़ाइल गायब है;
    • यदि मूल कॉन्फ़िगरेशन फ़ाइल मौजूद है और मान्य है, तो कॉन्फ़िगरेशन फ़ाइल से मानों का उपयोग किया जाएगा (आंतरिक मानों को बायपास किया जाएगा);
  2. cmd लाइन में पैकेज को बिना किसी कॉन्फिगर फाइल के चलाएं, लेकिन कॉल में वेरिएबल सेट के साथ:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • यदि मूल कॉन्फ़िगरेशन फ़ाइल मौजूद नहीं है, तो मान / सेट पैकेज कॉल से लिया जाता है;
    • यदि मूल कॉन्फ़िग फ़ाइल मौजूद है, तो मान कॉन्फिगर फ़ाइल से लिया जाता है और यहां तक ​​कि / SET को अनदेखा किया जाता है (यह केवल ऊपर के मामले में उपयोग किया जाता है);
  3. एक नई कॉन्फ़िग फ़ाइल के साथ cmd लाइन में पैकेज चलाएं (मान लें कि इसके बजाय DEV का निर्माण करें):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • यदि नया कॉन्फिगर (देव) फ़ाइल मौजूद है, और पुराना (प्रॉडक्ट) नहीं है, तो इससे प्राप्त मान का उपयोग किया जाता है;
    • यदि देव और उत्पाद दोनों विन्यास फाइल मौजूद हैं, तो केवल उत्पादन से मान का उपयोग किया जाता है (कमांड लाइन कॉल में निर्दिष्ट होने पर भी DEV को बायपास किया जाता है);
  4. cmd लाइन में पैकेज को नई कॉन्फिग फाइल और कॉल में SET स्टेटमेंट के साथ चलाएं:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig" /SET \Package.Variables[checkMe];"outside the package in cmd line - DEV config"
    • अगर दोनों कॉन्फिग फाइल मौजूद हैं, तो प्रोडक्ट का इस्तेमाल किया जाएगा, बाकी सभी को नजरअंदाज कर दिया जाएगा, यहां तक ​​कि एसईटी को भी;
    • यदि कोई कॉन्फ़िग फ़ाइल मौजूद नहीं है, तो SET मान का उपयोग किया जाएगा;

तो, संक्षेप में, यदि आप एक नई कॉन्फ़िगरेशन फ़ाइल का उपयोग करना चाहते हैं, तो आपको पुराने नाम को बदलना / स्थानांतरित करना होगा और पैकेज को / configurile के साथ कॉल करना होगा। यदि यह पर्याप्त नहीं है और नई कॉन्फ़िगरेशन फ़ाइल को ओवरराइड करना चाहते हैं, तो / SET वैरिएबल का उपयोग करें। या आप किसी भी कॉन्फ़िगर फ़ाइल को बायपास कर सकते हैं और बैच कॉल में सिर्फ / SET स्टेटमेंट का उपयोग कर सकते हैं।

उम्मीद है कि आपकी संभावनाओं में कुछ प्रकाश डालेगा।


तो ऐसा लगता है कि बड़ी समस्याओं में से एक यह है कि विकास बॉक्स पर मेरा पथ निष्पादन के दौरान सर्वर पर taht के समान है ताकि पैकेज में कॉन्फ़िगरेशन के लिए पथ हमेशा मान्य हो।
कैड रूक्स

इसलिए मुझे लगता है कि मेरे पास देव, टेस्ट और प्रोडक्ट होना चाहिए, पैकेज हमेशा देव की ओर इशारा करता है और कभी भी मेरे सर्वर पर देव कॉन्फिग नहीं होता है और फिर मैं सर्वर पर कई कॉन्फिग बना सकता हूं और बाद में विभिन्न कॉन्फिग के खिलाफ चलने में सक्षम हो सकता हूं। पैकेज में देव विन्यास कभी नहीं मिलेगा। तो मैं देव विन्यास का उपयोग करके डीबग कर सकता हूं, लेकिन फिर मुझे इसे देव बॉक्स पर कमांड लाइन से चलाने में परेशानी होगी क्योंकि यह उस देव विन्यास को खोज लेगा।
कैड रूक्स

मुझे लगता है कि आप सहमत हैं कि यह वास्तव में बहुत अधिक जटिल है जितना कि यह होना चाहिए, है ना? जैसे उन्हें 2008 के परिवर्तन में नई एक छोटी सुविधा (पुनः लोडिंग) मिली, लेकिन पैकेज कॉन्फ़िगरेशन के सबसे आम उपयोग परिदृश्य को मार दिया।
कैड रूक्स

ठीक है, हाँ, मैं मानता हूँ कि जिस तरह से यह होना चाहिए की तुलना में बदसूरत है। यह पता लगाने के लिए मुझे बहुत कुछ लगा, क्योंकि मैं हमेशा मूल कॉन्फ़िगरेशन फ़ाइल का नाम बदलना भूल गया हूं :-)। मैंने निम्न क्रम में रहना अधिक पसंद किया है: सेट, / configFile, मूल कॉन्फ़िगरेशन, इनर पैकेज मान। यह मेरे लिए और अधिक समझ में आता है ..
मैरियन

मेरे द्वारा पढ़ा गया कोई भी लेख वास्तव में उल्लेख नहीं करता है कि यह मूल कॉन्फ़िग फ़ाइल सुलभ है जो कि बहुत समस्या है। अब मैं देखता हूं कि उन्होंने उस SSIS पैकेज एडिटर को क्यों प्रकाशित किया ताकि आप BIDS को खोले बिना पैकेज में बदल सकें।
कैड रूक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.