2010-01-03 13 views
17

मैं इस त्रुटि मिल रही है चलाने के लिए संसाधन पूल 'डिफ़ॉल्ट' में अपर्याप्त सिस्टम स्मृति है:इस क्वेरी

इस क्वेरी चलाने के लिए संसाधन पूल 'डिफ़ॉल्ट' में अपर्याप्त सिस्टम स्मृति नहीं है।

मैं नीचे दिखाए गए अनुसार 100,000 सरल सम्मिलित बयान चला रहा हूं। मुझे लगभग 85,000 वें डालने पर त्रुटि मिली।

यह एक वर्ग मैं ले रहा हूँ के लिए एक डेमो है ...

use sampleautogrow 

INSERT INTO SampleData VALUES ('fazgypvlhl2svnh1t5di','8l8hzn95y5v20nlmoyzpq17v68chfjh9tbj496t4',1) 
INSERT INTO SampleData VALUES ('31t7phmjs7rcwi7d3ctg','852wm0l8zvd7k5vuemo16e67ydk9cq6rzp0f0sbs',2) 
INSERT INTO SampleData VALUES ('w3dtv4wsm3ho9l3073o1','udn28w25dogxb9ttwyqeieuz6almxg53a1ki72dq',1) 
INSERT INTO SampleData VALUES ('23u5uod07zilskyuhd7d','dopw0c76z7h1mu4p1hrfe8d7ei1z2rpwsffvk3pi',3) 

अग्रिम धन्यवाद, जिम एम

अद्यतन: बस बहुत ही दिलचस्प कुछ देखा। मैंने एक और डेटाबेस बनाया, नमूनाडेटा टेबल बनाने के लिए भूल गया। मैंने 100,000 पंक्तियों को जोड़ने के लिए क्वेरी चलाई, और यह भी शिकायत करने से पहले स्मृति त्रुटि से बाहर हो गया कि तालिका मौजूद नहीं थी। इस प्रकार, मुझे लगता है कि यह मेरी 100,000 लाइनों को "पढ़ने" की कोशिश कर स्मृति से बाहर चल रहा है?

उत्तर

32

आपके पास एक एकल बैच अनुरोध में 100,000 सम्मिलित विवरण हैं? अनुरोध को पार्स करने के लिए आपके सर्वर को अधिक रैम की आवश्यकता है। अधिक रैम खरीदें, x64 पर अपग्रेड करें या सर्वर पर भेजे गए एकल बैचों के आकार को कम करें। अर्थात। .sql फ़ाइल में अब और वहां GO छिड़कें।

+0

1000 आवेषण कोई समस्या का कारण है, तो क्यों 100,000 एक समस्या कारण है? क्या लेनदेन के साथ इसका कोई संबंध है? "जाओ" कथन क्यों जोड़ना चाहते हैं? –

+0

उपरोक्त मूल प्रश्न में मेरा अपडेट देखें। –

+9

जब आप एक बैच में 100k INSERT कथन भेजते हैं तो सर्वर प्रारंभ में लगभग 1 मिलियन दिखाई देगा। 'सामान' के पात्र। यह नहीं जानता कि अंदर क्या है, यह सभी बिंदुओं और रिक्त स्थान हो सकता है। इसे पहले पार्स किया जाना चाहिए, और टी-एसक्यूएल बैचों में पार्स किया गया है, लाइनों में नहीं (विपरीत, मूल कहें)। वह पार्सिंग स्मृति का उपभोग करती है और यह वह त्रुटि है जिसे आप देखते हैं। जब आपने एक अनपेक्षित तालिका के साथ प्रयास किया है, तो सर्वर उस बिंदु तक भी नहीं पहुंच पाया जब यह जांचता है कि तालिका मौजूद है या नहीं, क्योंकि यह संकलन समय के दौरान पार्स समय के दौरान नहीं होती है। इसे पहले पूरे बैच को पार्स करना होगा, और वह नहीं कर सकता है। –

0

आप SQLServer कनेक्शन उपकरण एप्लिकेशन को आजमा सकते हैं। इसमें विशाल एसक्यूएल रनर नामक एक सुविधा है जो प्रत्येक आदेश को एक-एक करके निष्पादित करती है। इस सुविधा के साथ स्क्रिप्ट कमांड निष्पादित करने के लिए बहुत कम मेमोरी का उपयोग किया जाएगा और आपको अब समस्या नहीं होगी।

SQL Server Connection Tools

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