2012-04-20 13 views
6

मेरे पास .sql फ़ाइल की एक फ़ाइल है जो लगभग 22,000 लाइन लंबी है। यह किसी और चीज से उत्पन्न होता है, लेकिन मूल रूप से केवल प्रति पंक्ति एक अपडेट स्टेटमेंट होता है।लांग एसक्यूएल फ़ाइल एसक्यूएल सर्वर को स्मृति से बाहर चलाती है (22,000 लाइनें)

जब मैं SQL सर्वर प्रबंधन स्टूडियो में फ़ाइल चलाता हूं तो मुझे यह त्रुटि मिलती है।

वहाँ रन इस क्वेरी

मुझे लगता है कि मैं सिर्फ इस क्वेरी अप फ़ाइल विभाजित करने की आवश्यकता करने के लिए संसाधन पूल 'आंतरिक' में अपर्याप्त सिस्टम स्मृति है, लेकिन मुझे यकीन है कि सबसे अच्छा तरीका नहीं कर रहा हूँ इसके बारे में जाओ मैं फ़ाइल को 2000 लाइन भागों या कुछ ऐसा मान सकता हूं जो मुझे लगता है।

यह एक साधारण समस्या की तरह लगता है, और मैं अक्सर ऐसा करूँगा मैं एक अच्छे समाधान के साथ आना चाहता हूं। कोई विचार?

+2

22000 अपडेट लगता है जैसे कुछ सही नहीं किया जा रहा है। इसे अधिक सेट-आधारित ऑपरेशन करने का कोई तरीका नहीं है? –

+0

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

+4

आपका जीवन बेकार है। :) एक्सेल किसी भी डीबीए का झुकाव है। –

उत्तर

5

आप एसएसएमएस जीयूआई इंटरफ़ेस के माध्यम से जाने के बजाय SQLCMD के माध्यम से अपनी स्क्रिप्ट चलाने में देखना चाहेंगे।

3

शायद आप बैच आकार पर एक सीमा मार रहे हैं, इसलिए SQL सर्वर को बैच को पार्स करने में समस्याएं हैं। यदि आप ~ 5000 लाइन भाग (हाइलाइट, निष्पादन) में चला सकते हैं तो यह मेरे सिद्धांत की पुष्टि करेगा।

आपके द्वारा सही बैच आकार नीचे पता है, तुम कर सकते हैं:

  1. GO सम्मिलित बयानों से अधिक फ़ाइलों

एक छोटी सी खोल करने के लिए के बीच में, एक नए बैच के लिए मजबूर करने

  • स्प्लिट स्क्रिप्टिंग या तो पर्याप्त होना चाहिए। UnxUtilssplit, head, और tail उपयोगी साबित होना चाहिए।

  • 3

    मैं एक ही मुद्दा था जब एसक्यूएल प्रबंधन स्टूडियो पर चल रहा है, क्या मैंने किया था कमांड लाइन में निष्पादित था osql -S स्थानीय होस्ट -d mydb -E मैं। \ Hugescript.sql

    http://tutewall.com/cannot-execute-script-insufficient-memory-error-sql-server/

    2

    मुझे इसी तरह की समस्या थी और blog से कमांड प्रॉम्प्ट में कमांड कमांड ने मुझे बचाया।

    sqlcmd -S YOURSQLSERVER\INSTANCENAME -i "C:\Your Script.sql" 
    
    0

    आप इस समाधान के साथ अपने सर्वर पर अधिक स्मृति आवंटित कर सकते हैं,:

    1. वस्तु Explorer में, एक सर्वर राइट क्लिक करें और गुण चुनें।
    2. मेमोरी नोड पर क्लिक करें।
    3. सर्वर मेमोरी विकल्प के तहत, न्यूनतम सर्वर मेमोरी और अधिकतम सर्वर मेमोरी के लिए इच्छित राशि दर्ज करें।

    अधिकतम का डिफ़ॉल्ट 2147483647 है, मैं इसे 9147483647 में बदलता हूं और मेरी समस्या हल हो गई है।