2011-09-12 17 views
5

मेरे पास सीसीए 25 डेटाबेस हैं जिन्हें मुझे 1 डेटाबेस में समेकित करने की आवश्यकता है। सबसे पहले मैं एक SSIS पैकेज जो एक जगह में प्रत्येक तालिका से सभी डेटा की नक़ल की निर्माण करने की कोशिश लेकिन फिर मैं त्रुटि मिली:एसएसआईएस - मेमोरी त्रुटि से फिर से

Information: The buffer manager failed a memory allocation call for 10485760 bytes, but was unable to swap out any buffers to relieve memory pressure. 1892 buffers were considered and 1892 were locked. Either not enough memory is available to the pipeline because not enough are installed, other processes were using it, or too many buffers are locked.

तब मुझे एहसास हुआ कि यह अच्छा विचार नहीं है और कि मैं केवल नए रिकॉर्ड डालने के लिए की जरूरत है और मौजूदा अपडेट करें। इसके बाद मैंने इस विकल्प को आजमाया:

  • सभी कॉन की एक सूची प्राप्त करें। तार
  • foreach db, नए रिकॉर्ड मौजूदा (उन जो गंतव्य तालिका में अस्थायी तालिका में स्रोत से प्रतिलिपि अद्यतन करने की आवश्यकता है, तो गंतव्य से उन्हें हटाने और अस्थायी से नकल)

enter image description here

कॉपी और अद्यतन

यहाँ कैसे डाटा प्रवाह कार्य डेटा लाख से अधिक पंक्तियों के procceses प्रवाह

तरह

enter image description here

कुछ मामलों में दिखाई देता है। लेकिन, मुझे अभी भी वही त्रुटि मिलती है - स्मृति से बाहर चला गया।

कार्य प्रबंधक में स्थिति पीछा कर रहा है:

enter image description here enter image description here

मैं नोट करने के लिए 28 डेटाबेस इस एक ही सर्वर पर दोहराया जा रहा है देखते हैं कि है और जब इस पैकेज एसक्यूएल सर्वर नहीं चल रहा है अभी भी उपयोग कर रहा है 1 जीबी से अधिक स्मृति। मैं पढ़ा है कि यह एक सामान्य बात है, लेकिन अब मुझे लगता है कि यकीन नहीं है ...

मैं एसक्यूएल सर्वर के लिए हॉटफिक्स स्थापित किया है मैं इस लेख में मिल गया है: http://support.microsoft.com/kb/977190 लेकिन यह मदद नहीं करता है ... क्या मैं कुछ गलत कर रहा हूं या यह वही तरीका है जो काम करता है और मुझे लगता है कि वर्कअराउंड समाधान ढूंढना है?

धन्यवाद,
इले

+0

आपने क्या ब्लैक आउट किया है? एक "गुप्त" प्रक्रिया? –

उत्तर

1

मैं एक समाधान मिल गया और समस्या एसक्यूएल सर्वर में था - यह स्मृति की बहुत अधिक खपत की गई थी। डिफ़ॉल्ट रूप से अधिकतम सर्वर मेमोरी 2147483647 पर सेट की गई थी (यह डिफ़ॉल्ट मान है)। चूंकि मेरे सर्वर में 4 जीबी रैम है, इसलिए मैंने इस नंबर को 1100 एमबी तक सीमित कर दिया है। तब से, कोई स्मृति समस्या नहीं थी, लेकिन फिर भी, मेरे प्रवाह कार्य बहुत धीमे थे। समस्या लुकअप का उपयोग करने में थी। डिफ़ॉल्ट रूप से, लुकअप लुकअप टेबल से सब कुछ चुनता है - मैंने इसे बदल दिया और केवल कॉलम का चयन किया जो मुझे लुकअप के लिए चाहिए - इसने प्रक्रिया को कई बार तेज किया।

अब समेकन की पूरी प्रक्रिया लगभग 1: 15h लगती है।

3

अपने लुक परिवर्तन पूर्ण कैश करने के लिए सेट है, तो आप स्मृति में समस्याएं आ रही हो सकता है। मैंने जो देखा है, उससे विलय जुड़ने की तुलना में बेहतर प्रदर्शन करता है यदि पंक्तियों की संख्या 10 मिलियन से अधिक हो।

निम्न पर एक नज़र डालें जहां मैंने मर्ज जॉइन और लुकअप ट्रांसफ़ॉर्मेशन के बीच अंतर समझाया है।

What are the differences between Merge Join and Lookup transformations in SSIS?

+0

मुझे पंक्तियों को अपडेट करने के लिए मर्ज में शामिल होने का तरीका नहीं दिखता है ...मैं उस विधि को भी कोशिश करूंगा लेकिन मुझे अपडेट करने के लिए भाग याद आ रहा है ... धन्यवाद! –