डेटाबेस कम्पैटिबिलिटी लेवल, डेटाबेस लेवल सेटिंग्स में से एक है, जो प्रभावित करता है कि डेटाबेस कैसे कार्य करता है। Microsoft® SQL Server® का प्रत्येक नया संस्करण कई नई सुविधाएं पेश करता है, जिनमें से अधिकांश को नए कीवर्ड की आवश्यकता होती है और जो पहले के संस्करणों में मौजूद कुछ व्यवहारों को बदल देती हैं। अधिकतम बैकवर्ड कम्पैटिबिलिटी प्रदान करने के लिए, Microsoft हमें अपनी आवश्यकताओं के अनुसार कम्पैटिबिलिटी लेवल सेट करने में सक्षम बनाता है।
डेटाबेस कम्पैटिबिलिटी लेवल डिफ़ॉल्ट
डिफ़ॉल्ट रूप से, प्रत्येक डेटाबेस उस मॉडल डेटाबेस संस्करण का कम्पैटिबिलिटी लेवल विरासत में प्राप्त करता है जिससे इसे बनाया गया था। उदाहरण के लिए, SQL Server 2012 डेटाबेस का कम्पैटिबिलिटी लेवल डिफ़ॉल्ट रूप से 110 होता है जब तक कि आप इसे बदल न दें।
रिस्टोर के बाद कम्पैटिबिलिटी लेवल
जब आप SQL के पुराने संस्करण पर लिए गए डेटाबेस बैकअप को रिस्टोर करते हैं, तो डेटाबेस कम्पैटिबिलिटी लेवल वैसा ही रहता है जैसा उस इंस्टेंस पर था जिससे आपने बैकअप लिया था, जब तक कि स्रोत कम्पैटिबिलिटी लेवल न्यूनतम समर्थित स्तर से कम न हो। उस स्थिति में, डेटाबेस कम्पैटिबिलिटी लेवल न्यूनतम समर्थित संस्करण में बदल जाता है। उदाहरण के लिए, यदि हम SQL Server 2005 डेटाबेस बैकअप को SQL Server 2017 पर रिस्टोर करते हैं, तो रिस्टोर किए गए डेटाबेस का कम्पैटिबिलिटी लेवल 100 पर सेट होगा क्योंकि यह SQL 2017 द्वारा समर्थित न्यूनतम स्तर है।
अपग्रेड के बाद कम्पैटिबिलिटी लेवल
tempdb, model, msdb, और रिसोर्स डेटाबेस के कम्पैटिबिलिटी लेवल अपग्रेड के बाद वर्तमान कम्पैटिबिलिटी लेवल पर सेट हो जाते हैं। मास्टर सिस्टम डेटाबेस अपग्रेड से पहले का अपना कम्पैटिबिलिटी लेवल बरकरार रखता है।
कम्पैटिबिलिटी लेवल निर्धारित करें
वर्तमान कम्पैटिबिलिटी लेवल निर्धारित करने के लिए, sys.databases के compatibility_level कॉलम को क्वेरी करें।
अलग कम्पैटिबिलिटी लेवल पर बदलने के लिए, निम्न उदाहरण में दिखाए अनुसार ALTER DATABASE कमांड का उपयोग करें:
USE Master
GO
ALTER DATABASE <database name> SET COMPATIBILITY_LEVEL = <compatibility-level>;
यदि आप चाहें, तो विज़ार्ड का उपयोग करके कम्पैटिबिलिटी लेवल बदल सकते हैं। हालांकि, यदि डेटाबेस को यूजर्स द्वारा ऑनलाइन एक्सेस किया जा रहा है, तो आपको पहले डेटाबेस को सिंगल-यूजर मोड में बदलना चाहिए। फिर, विज़ार्ड का उपयोग करके लेवल बदलने के बाद, आपको डेटाबेस को मल्टी-यूजर मोड में रखना चाहिए।
विज़ार्ड के साथ कम्पैटिबिलिटी लेवल बदलने के लिए, राइट-क्लिक करें डेटाबेस → प्रॉपर्टी → विकल्प → डेटाबेस कम्पैटिबिलिटी लेवल जैसा कि निम्न छवि में दिखाया गया है:
डिफ़ॉल्ट और समर्थित कम्पैटिबिलिटी लेवल
निम्न तालिका SQL Server संस्करणों को उनके डिफ़ॉल्ट कम्पैटिबिलिटी और समर्थित कम्पैटिबिलिटी लेवल की सूची के साथ दिखाती है:
स्रोत: https://www.sqlskills.com/blogs/glenn/database-compatibility-level-in-sql-server/
डेटाबेस कम्पैटिबिलिटी लेवल और प्रदर्शन
SQL 2014 से पहले के SQL Server संस्करणों में, डेटाबेस एडमिनिस्ट्रेटर कभी भी प्रदर्शन के दृष्टिकोण से डेटाबेस कम्पैटिबिलिटी लेवल के बारे में चिंतित नहीं थे। डेटाबेस कम्पैटिबिलिटी लेवल का उपयोग मुख्य रूप से इस तंत्र के रूप में किया जाता था कि उस संस्करण में पेश की गई नई सुविधाओं का उपयोग किया जा सकता है या नहीं या गैर-समर्थित सुविधाओं को अक्षम किया गया है। इसका उपयोग बैकवर्ड कम्पैटिबिलिटी को नियंत्रित करने के लिए भी किया जाता था।
अब, जब आप एक संस्करण से दूसरे संस्करण में माइग्रेट करते हैं, तो आपको प्रदर्शन में परिवर्तन को समझने के लिए पूर्ण रिग्रेशन टेस्ट करना चाहिए। कभी-कभी, माइग्रेशन के बाद भी पुराने कम्पैटिबिलिटी लेवल के साथ एक क्वेरी बेहतर प्रदर्शन करती है। हालांकि, अन्य मामलों में, यह विपरीत हो सकता है, इसलिए पूर्ण रिग्रेशन टेस्ट करना सुनिश्चित करें।
SQL Server 2014 से, कम्पैटिबिलिटी लेवल 120 या उससे ऊपर पर चलने वाला कोई भी डेटाबेस नए कार्डिनैलिटी एस्टीमेट फ़ंक्शन का उपयोग कर सकता है। कार्डिनैलिटी एस्टीमेशन वह तर्क है जो यह निर्धारित करता है कि SQL Server अनुमानित लागत के आधार पर क्वेरी को कैसे निष्पादित करता है। अनुमान की गणना उस क्वेरी में शामिल ऑब्जेक्ट्स से जुड़े आंकड़ों से इनपुट का उपयोग करके की जाती है। व्यावहारिक रूप से, उच्च स्तर पर, कार्डिनैलिटी अनुमान क्वेरी में संदर्भित टेबल और ऑब्जेक्ट्स में निहित पंक्ति-गणना अनुमानों के साथ-साथ मूल्यों के वितरण, विशिष्ट मूल्य गणना, और डुप्लिकेट गणना के बारे में जानकारी के संयोजन हैं। इन अनुमानों को गलत करने से अनावश्यक डिस्क I/O हो सकता है क्योंकि अपर्याप्त मेमोरी अनुदान (जैसे TempDB स्पिल) या सीरियल प्लान निष्पादन का चयन समानांतर प्लान निष्पादन पर किया जा सकता है। मैं अपने अगले ब्लॉग पोस्ट में कार्डिनैलिटी एस्टीमेशन के बारे में अधिक चर्चा करने की योजना बना रहा हूं।
कम्पैटिबिलिटी लेवल बदलने का प्रभाव
कम्पैटिबिलिटी लेवल बदलने से डेटाबेस को अपना फीचर सेट बदलने के लिए कहा जाता है। यानी, कुछ सुविधाएं जोड़ी जाती हैं, और साथ ही, कुछ पुरानी सुविधाएं हटा दी जाती हैं। उदाहरण के लिए, कम्पैटिबिलिटी लेवल 100 पर FOR BROWSE क्लॉज INSERT और SELECT INTO स्टेटमेंट में अनुमत नहीं है, और कम्पैटिबिलिटी लेवल 90 पर अनुमत है लेकिन अनदेखा किया जाता है। यदि आपका एप्लिकेशन इस सुविधा का उपयोग करता है, तो यह परिवर्तन अप्रत्याशित परिणाम ला सकता है।
जब आप किसी डेटाबेस को निचले से उच्च कम्पैटिबिलिटी लेवल पर ले जाते हैं, तो आप उम्मीद कर सकते हैं कि यदि कम्पैटिबिलिटी नहीं बदली गई है तो आप नई सुविधा का उपयोग नहीं कर पाएंगे। हालांकि, यह पूरी तरह से सही नहीं है। यह केवल डेटाबेस लेवल की सुविधा के लिए सही है। आप इंस्टेंस लेवल की सुविधाओं का उपयोग कर सकते हैं भले ही आप कम्पैटिबिलिटी लेवल न बदलें।
निष्कर्ष
डेटाबेस कम्पैटिबिलिटी लेवल परिभाषित करता है कि SQL Server कुछ सुविधाओं का उपयोग कैसे करता है। विशेष रूप से, यह उन्हें SQL Server के दिए गए संस्करण की तरह कार्य करने का कारण बनता है, जो आमतौर पर कुछ स्तर की बैकवर्ड कम्पैटिबिलिटी प्रदान करने के लिए किया जाता है। चूंकि यह एक डेटाबेस प्रॉपर्टी है, इसलिए कम्पैटिबिलिटी केवल उस विशिष्ट डेटाबेस के लिए डेटाबेस लेवल की सुविधाओं को प्रभावित करती है।
यदि आप किसी डेटाबेस को या तो उच्च संस्करण वाले सर्वर पर ले जाकर या इन-प्लेस इंस्टेंस अपग्रेड करके अपग्रेड करते हैं, तो कम्पैटिबिलिटी लेवल तब तक समान रहता है जब तक कि वह स्तर समर्थित है।
यदि कम्पैटिबिलिटी लेवल SQL 2014 या उच्च पर सेट है, तो SQL Server नई कार्डिनैलिटी एस्टीमेशन सुविधा का उपयोग करता है। यदि कम्पैटिबिलिटी लेवल 2012 या निचले पर सेट है, तो पुराना ऑप्टिमाइज़र उपयोग किया जाता है।
टिप्पणी करने या प्रश्न पूछने के लिए फीडबैक टैब का उपयोग करें।
विशेषज्ञ प्रशासन, प्रबंधन और कॉन्फ़िगरेशन के साथ अपने वातावरण को अनुकूलित करें
Rackspace के एप्लिकेशन सर्विसेज (RAS) विशेषज्ञ अनुप्रयोगों के एक विस्तृत पोर्टफोलियो में निम्नलिखित पेशेवर और प्रबंधित सेवाएं प्रदान करते हैं:
- ईकॉमर्स और डिजिटल एक्सपीरियंस प्लेटफॉर्म
- एंटरप्राइज रिसोर्स प्लानिंग (ERP)
- बिजनेस इंटेलिजेंस
- सेल्सफोर्स कस्टमर रिलेशनशिप मैनेजमेंट (CRM)
- डेटाबेस
- ईमेल होस्टिंग और उत्पादकता
हम प्रदान करते हैं:
- निष्पक्ष विशेषज्ञता: हम आपकी आधुनिकीकरण यात्रा को सरल बनाते हैं और मार्गदर्शन करते हैं, उन क्षमताओं पर ध्यान केंद्रित करते हैं जो तत्काल मूल्य प्रदान करती हैं।
- फैनैटिकल एक्सपीरियंस™: हम समर्पित तकनीकी सहायता के साथ प्रोसेस फर्स्ट, टेक्नोलॉजी सेकंड® दृष्टिकोण को जोड़कर व्यापक समाधान प्रदान करते हैं।
- अद्वितीय पोर्टफोलियो: हम आपको सही क्लाउड पर सही तकनीक चुनने और तैनात करने में मदद करने के लिए व्यापक क्लाउड अनुभव लागू करते हैं।
- एजाइल डिलीवरी: हम आपकी यात्रा में जहां आप हैं वहां मिलते हैं और अपनी सफलता को आपके साथ संरेखित करते हैं।
अभी चैट करें शुरू करने के लिए।