नवीनीकरण के बाद SQL कॉल से निपटने में त्रुटि त्रुटि सेट करें


13

हम अपने परीक्षण वातावरण को एक नए सर्वर और Microsoft SQL सर्वर के अद्यतन संस्करण के साथ अपग्रेड कर रहे हैं और एक समस्या में चले गए हैं।

नए सर्वर पर, कुछ संग्रहीत प्रक्रियाओं को निष्पादित करते समय हमारा पुराना कोड "ऑपरेशन बंद हो जाता है जब ऑब्जेक्ट बंद हो जाता है" की अनुमति नहीं होती है। पुराने सर्वर पर यह संदेश कभी नहीं आया। जब हमने इसे नीचे ट्रैक किया, SET NOCOUNT ON;तो संग्रहीत प्रक्रिया में जोड़कर समस्या को हल किया जा सकता है ।

मैंने डेटाबेस के डिफॉल्ट्स को देखा और डिफॉल्ट्स से संबंधित कोई भी सेटिंग अलग नहीं देखी (SQL Server 2008 बनाम SQL Server 2014)।

SET NOCOUNT ONएक हज़ार संग्रहित प्रोक्स में जोड़ने की आवश्यकता के बिना मुझे इस सेटिंग को विश्व स्तर पर हल करने के लिए क्या देखना चाहिए ?


2
सभी संग्रहीत कार्यविधियाँ आपके द्वारा निर्भर किए जाने वाले व्यवहार को निर्दिष्ट करना चाहिए, जो उपयोगकर्ता के विकल्पों पर निर्भर होने की तुलना में अधिक सुरक्षित है। मैं संभावित रूप से यह भी तर्क दूंगा कि हर संग्रहीत प्रक्रिया हमेशा SET NOCOUNT ON;, हमेशा से शुरू होनी चाहिए ।
हारून बर्ट्रेंड

@AaronBertrand मैं सहमत हूँ; अंतिम परियोजना जो मैं कर रहा था उस पर एक टेम्पलेट था, जिसने इस पर ध्यान केंद्रित किया था, लेकिन इस समय इस परियोजना में कोई विकल्प नहीं है
UnhandledExcepSean

ध्यान दें कि आप सभी संग्रहीत प्रक्रियाओं को बदलने के लिए एक स्क्रिप्ट लिख सकते हैं और SET NOCOUNT ON;संग्रहीत कार्यविधि (बाद BEGIN) की शुरुआत में जोड़ सकते हैं । संग्रहीत प्रक्रियाओं की संख्या वास्तव में कोई समस्या नहीं होनी चाहिए।
एरिक

1
@ एरिक-ए - आप निश्चित नहीं हो सकते हैं कि एक संग्रहीत प्रक्रिया शुरू होती है BEGIN- यह अच्छा है, लेकिन इसकी आवश्यकता नहीं है।
मैक्स वर्नोन

जवाबों:


16

SQL सर्वर कॉन्फ़िगरेशन में एक विकल्प है, जिसे उचित रूप से कहा जाता है, जिसे सिस्टम संग्रहीत कार्यविधि user optionsका उपयोग करके सेट किया जा सकता है sp_configure। मैंने SQL सर्वर साइंस पर एक ब्लॉग पोस्ट लिखी है जिसमें दिखाया गया है कि उपयोगकर्ता विकल्पों का निरीक्षण और सेट कैसे करें।

संक्षेप में, आप इसका उपयोग करके पुराने सर्वर से "कॉन्फ़िगरेशन मान" प्राप्त कर सकते हैं:

EXEC sys.sp_configure 'user options';

फिर, इसके माध्यम से एक ही विकल्प का उपयोग करने के लिए नया सर्वर सेट करें:

EXEC sys.sp_configure 'user options', <config value>;
RECONFIGURE

(पुराने सर्वर से मान के साथ <config value> बदलें)।


यह लगभग निश्चित रूप से कारण है (अब पुष्टि पर प्रतीक्षा)। पुराने सर्वर में 512 का मान था, जो कि MS ( docs.microsoft.com/en-us/sql/database-engine/configure-windows/… ) के अनुसार NOCOUNT है । मैं इस पहले नहीं देखा के रूप में मैं केवल @@ विकल्प देख रहा था
UnhandledExcepSean

यह निश्चित रूप से सही है। यदि SET NOCOUNT ONसमस्या हल हो जाती है, तो उपयोगकर्ता विकल्पों को 512 पर सेट करना ठीक कर देगा।
मैक्स वर्नोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.