2008-10-22 10 views
9

मेरे पास एक बड़ी स्क्रिप्ट फ़ाइल है (लगभग 300 एमबी, और भविष्य में व्यवहार्य रूप से बड़ा) कि मैं दौड़ने की कोशिश कर रहा हूं। Gulzar के जवाब question about it के जवाब में यह सुझाव दिया गया है कि मुझे स्क्रिप्ट टाइमआउट 0 (कोई टाइमआउट नहीं) बदलना चाहिए।मैं स्क्रिप्ट के भीतर से SQL सर्वर स्क्रिप्ट का टाइमआउट कैसे सेट करूं?

इस टाइमआउट को स्क्रिप्ट के भीतर से सेट करने का सबसे अच्छा तरीका क्या है? फिलहाल मैं उम्मीद में स्क्रिप्ट फ़ाइल के शीर्ष उनमें से एक कुछ करता है कि कम से यह सब किया है:

sp_configure 'remote login timeout', 600 
go 
sp_configure 'remote query timeout', 0 
go 
sp_configure 'query wait', 0 
go 
reconfigure with override 
go 

हालांकि, मैं अभी भी एक ही परिणाम हो रही है और मैं नहीं बता सकता कि क्या मैं

Sqlcmd: Error: Scripting error.

धन्यवाद: 'समय-समाप्ति सेट क्योंकि sqlcmd.exe से प्रतिक्रिया दुनिया की कम से कम उपयोगी त्रुटि संदेश है में सफल हूँ।

उत्तर

5
sqlcmd -t {n} 

कहाँ {n} एक संख्या 0 और के बीच 65535

ध्यान रखें कि आपके सवाल थोड़ा the server has no concept of a timeout के बाद से भ्रामक है होना चाहिए और इसलिए आप अपनी स्क्रिप्ट के भीतर समाप्ति सेट नहीं कर सकते।

अपने संदर्भ में टाइमआउट sqlcmd

+0

@edg: मैंने कभी भी sqlcmd के विकल्प के बारे में नहीं सुना है और इसे दस्तावेज़ में नहीं मिला है। लेकिन मैंने इसे एसक्यूएलसीएमडी की जांच की -? - और वहां है! वाहवाही! – splattne

+0

मुझे लगता है कि यह काम नहीं करेगा। sqlcmd.exe सेटिंग के बिना - स्पष्ट रूप से "कोई टाइमआउट नहीं" – Tomalak

+1

Yup का अर्थ है। तकनीकी रूप से मेरे प्रश्न का सही जवाब, लेकिन मूल समस्या में मदद नहीं की। फिर भी धन्यवाद! – tags2k

4

मुझे लगता है कि SQL सर्वर पर SQL स्क्रिप्ट के भीतर टाइमआउट की कोई अवधारणा नहीं है। आपको कॉलिंग परत/क्लाइंट में टाइमआउट सेट करना होगा।

exec sp_configure 'remote query timeout', 0 
go 
reconfigure with override 
go 

"कब तक, सेकंड में, एक रिमोट ऑपरेशन Microsoft SQL सर्वर के समय से पहले ले जा सकते हैं निर्दिष्ट करने के लिए दूरदराज के क्वेरी टाइमआउट विकल्प का उपयोग करें:

this MSDN article के अनुसार आप इस तरह से टाइमआउट को बढ़ाने के लिए कोशिश कर सकते बाहर। डिफ़ॉल्ट 600 है, जो 10 मिनट की प्रतीक्षा की अनुमति देता है। यह मान डेटाबेस इंजन द्वारा दूरस्थ क्वेरी के रूप में शुरू किए गए आउटगोइंग कनेक्शन पर लागू होता है। यह मान डेटाबेस इंजन द्वारा प्राप्त प्रश्नों पर कोई प्रभाव नहीं पड़ता है। "

पीएस .: 300 एमबी से आपका मतलब है कि परिणामस्वरूप फ़ाइल 300 एमबी है? मुझे उम्मीद नहीं है कि स्क्रिप्ट फ़ाइल स्वयं 300 एमबी है। यह एक विश्व रिकॉर्ड होगा। ;-)

+1

हाँ जोड़ें, SQL स्क्रिप्ट खुद ~ 300MB है। मुझे संदेह है कि यह एक विश्व रिकॉर्ड है क्योंकि यह एक बहुत ही साधारण टेबल की केवल 1.4 मिलियन पंक्तियां है! – tags2k

+0

@ टैग 2k ओह, इसका उपयोग "INSERT" कथन के अंदर डेटा डालने के लिए किया जाता है ... मुझे यकीन है कि ऐसा करने का एक कारण है, लेकिन क्या आप टेक्स्टफाइल में डेटा नहीं प्राप्त कर सकते हैं और इसे डीटीएस-पैकेज के माध्यम से आयात नहीं कर सकते या कुछ समान है? – splattne

+0

प्रत्येक लाइन को मेरे एपीआई के माध्यम से चेक करने की ज़रूरत है, और मुझे यकीन है कि मैं एक डीटीएस पैकेज के माध्यम से सभी चेकों को दोहराने के लिए आवश्यक समय और तनाव के लिए प्रतिलिपि बना सकता हूं, मैं पहले से ही एसक्यूएल स्क्रिप्ट को विभाजित कर सकता हूं। – tags2k

7

आपका समाधान द्वारा लागू की जाती - GO हर 100 या 150 लाइनों

http://www.red-gate.com/MessageBoard/viewtopic.php?t=8109

+0

अच्छा विचार, सिवाय इसके कि आपकी स्क्रिप्ट चर का उपयोग करती है। –

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