OLE DB डेस्टिनेशन घटक के डेटा एक्सेस मोड्स दो फ्लेवर में आते हैं - फास्ट और नॉन-फास्ट।
फास्ट, या तो "टेबल या व्यू - फास्ट लोड" या "टेबल या व्यू नाम चर - फास्ट लोड" का अर्थ है कि डेटा सेट-आधारित फैशन में लोड किया जाएगा।
धीमे - या तो "तालिका या दृश्य" या "तालिका या दृश्य नाम चर" एसएसआईएस के परिणामस्वरूप डेटाबेस में सिंगलटन इंसर्ट स्टेटमेंट जारी करेगा। यदि आप 10, 100, शायद 10000 पंक्तियों को भी लोड कर रहे हैं, तो संभवतः दो तरीकों के बीच थोड़ा सराहनीय प्रदर्शन अंतर है। हालाँकि, कुछ बिंदु पर आप इन सभी छोटे अनुरोधों के साथ अपने SQL सर्वर उदाहरण को संतृप्त करने जा रहे हैं। इसके अतिरिक्त, आप अपने लेन-देन लॉग से हटकर दुरुपयोग करने जा रहे हैं।
आप कभी गैर-तेज़ तरीके क्यों चाहते हैं? खराब डेटा। अगर मैंने डेटा की 10000 पंक्तियों में भेजा और 9999 वीं पंक्ति में 2015-02-29 की तारीख थी, तो आपके पास 10k परमाणु आवेषण और कमिट / रोलबैक होंगे। अगर मैं फास्ट विधि का उपयोग कर रहा था, तो 10k पंक्तियों के पूरे बैच या तो सभी को बचाएंगे या उनमें से कोई भी नहीं। और यदि आप यह जानना चाहते हैं कि कौन सी पंक्ति (पंक्तियाँ) त्रुटिपूर्ण हैं, तो आपके पास न्यूनतम स्तर 10k पंक्तियाँ होंगी।
अब, जितना संभव हो उतना तेज़ डेटा लोड करने के लिए दृष्टिकोण हैं और अभी भी गंदे डेटा को संभालते हैं। यह एक कैस्केडिंग विफलता दृष्टिकोण है और यह कुछ ऐसा दिखता है
विचार यह है कि आप एक शॉट में जितना संभव हो सके सही आकार डालें, लेकिन यदि आपको खराब डेटा मिलता है, तो आप खराब पंक्तियों को प्राप्त करने के लिए डेटा को लगातार छोटे बैचों में फिर से शुरू करने का प्रयास करने जा रहे हैं। यहाँ मैं एक अधिकतम के साथ शुरू किया 10000 का सम्मिलित प्रतिबद्ध आकार (FastLoadMaxInsertCommit) त्रुटि पंक्ति स्वभाव पर, मैं यह करने के लिए बदल Redirect Row
से Fail Component
।
अगला गंतव्य ऊपर के समान है, लेकिन यहां मैं एक तेज लोड का प्रयास करता हूं और इसे 100 पंक्तियों के बैचों में बचाता हूं। फिर से, उचित आकार के साथ आने का परीक्षण या कुछ दिखावा करें। इसके परिणामस्वरूप 100 पंक्तियों के 100 बैच भेजे जाएंगे क्योंकि हम कहीं न कहीं जानते हैं , कम से कम एक पंक्ति है जिसने तालिका के लिए अखंडता बाधाओं का उल्लंघन किया है।
मैं फिर मिक्स में एक तीसरा घटक जोड़ता हूं, इस बार मैं 1. के बैचों में सहेजता हूं या आप केवल फास्ट लोड संस्करण से दूर टेबल एक्सेस मोड को बदल सकते हैं क्योंकि यह एक ही परिणाम देगा। हम प्रत्येक पंक्ति को व्यक्तिगत रूप से सहेजेंगे और वह हमें एकल खराब पंक्ति (ओं) के साथ "कुछ" करने में सक्षम करेगी।
अंत में, मेरे पास एक असफल गंतव्य है। हो सकता है कि यह अभीष्ट गंतव्य के रूप में "समान" तालिका हो, लेकिन सभी स्तंभों को घोषित किया गया हो nvarchar(4000) NULL
। उस तालिका में जो कुछ भी समाप्त होता है, उस पर शोध और सफाई / त्याग करने की आवश्यकता है या आपकी खराब डेटा रिज़ॉल्यूशन प्रक्रिया जो भी हो। अन्य लोग एक फ्लैट फ़ाइल पर डंप करते हैं, लेकिन वास्तव में, जो कुछ भी समझ में आता है कि आप खराब डेटा कार्यों को कैसे ट्रैक करना चाहते हैं।