अपने पिछले लेख में मैंने SQL सर्वर Collation की मूल बातें समझाई हैं। मेरा सुझाव है कि आप पहले उस लेख को पढ़ें (यदि आपने पहले से नहीं किया है)। यहां, मैं आपको दिखाऊंगा कि सर्वर-स्तरीय संयोजन या मौजूदा SQL सर्वर आवृत्ति के SQL सर्वर आवृत्ति-स्तर के संयोजन को कैसे बदला जाए।
SQL सर्वर में सर्वर लेवल कॉलेशन क्या है?
Collation डेटा के लिए सॉर्टिंग नियम, केस और एक्सेंट गुण निर्धारित करता है। यह एक महत्वपूर्ण सेटिंग है जो डेटाबेस के अंदर आपके डेटा को प्रभावित कर सकती है, इसलिए इसे बार-बार बदलने की अनुशंसा नहीं की जाती है।
SQL सर्वर में 4 परतों में संयोजन को कॉन्फ़िगर किया जा सकता है:
- सर्वर स्तर
- डेटाबेस स्तर
- स्तंभ स्तर
- अभिव्यक्ति स्तर
नोट: यदि आप SQL सर्वर एक्सप्रेस संस्करण का उपयोग कर रहे हैं, तो आप SQL_Latin1_General_CP1_CI_AS से कोलेशन नहीं बदल सकते। ।
मौजूदा SQL सर्वर इंस्टेंस का सर्वर लेवल कॉलेशन बदलें
यह खंड सर्वर-स्तरीय संयोजन को बदलने के लिए पूर्वापेक्षाएँ और प्रक्रिया का वर्णन करेगा। इसे नए संयोजन नाम के साथ सिस्टम डेटाबेस के पुनर्निर्माण द्वारा बदल दिया जाएगा।
आवश्यकताएं
उत्पादन उदाहरण के लिए संयोजन परिवर्तन निष्पादित करने के लिए नीचे दिए गए बिंदुओं का पालन करें।
- सभी डेटाबेस का पूर्ण बैकअप चलाएँ। यदि संभव हो, तो इस प्रक्रिया को शुरू करने से पहले VM स्नैपशॉट लें।
- सुनिश्चित करें कि आपके पास उपयोगकर्ता डेटाबेस या डेटाबेस ऑब्जेक्ट जैसे टेबल, लॉगिन, उपयोगकर्ता, जॉब आदि बनाने के लिए सभी स्क्रिप्ट हैं। हम कॉलेशन परिवर्तन के बाद सभी डेटाबेस ऑब्जेक्ट बनाएंगे।
- bcp का उपयोग करके सभी डेटा निर्यात करें या कोई तृतीय-पक्ष टूल।
- रिकॉर्ड सर्वर-स्तरीय कॉन्फ़िगरेशन मान और SQL सर्वर इंस्टेंस बिल्ड नंबर इंस्टेंस पर लागू हॉटफ़िक्स सहित।
- सभी सिस्टम डेटाबेस फ़ाइल स्थान रिकॉर्ड करें। इसकी आवश्यकता हो सकती है यदि आपने अपनी सिस्टम डेटाबेस फ़ाइलों को किसी अन्य स्थान पर स्थानांतरित कर दिया है।
आइए कुछ लिपियों पर एक नज़र डालें जो आपको सिस्टम विवरण प्राप्त करने में मदद करेंगी। इन आउटपुट को नोटपैड या एक्सेल फ़ाइल में कॉपी करें, या बस एक स्क्रीनशॉट लें और इसे भविष्य के संदर्भ के लिए सहेजें।
सभी सर्वर-स्तरीय कॉन्फ़िगरेशन प्राप्त करने के लिए निम्न कमांड चलाएँ।
--Get all server level configurations
SELECT * FROM sys.configurations;
नीचे दी गई क्वेरी को क्रियान्वित करके SQL सर्वर बिल्ड संस्करण को कैप्चर करें।
--Fetch SQL Server build version
SELECT @@VERSION
GO
SELECT
SERVERPROPERTY('ProductVersion ') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
इसी तरह, हमें नीचे दिए गए टी-एसक्यूएल स्टेटमेंट को चलाकर सिस्टम डेटाबेस फाइल लोकेशन प्राप्त करनी चाहिए।
SELECT name, physical_name AS Database_file_location
FROM sys.master_files
WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
इसके बाद, हम एक ही शॉट में SQL सर्वर इंस्टेंस और सभी डेटाबेस की कॉलेशन जानकारी एकत्र करने के लिए नीचे दी गई T-SQL स्क्रिप्ट चलाएंगे।
--Get existing collation of SQL Server Instance and all databases
SELECT name, collation_name
FROM sys.databases
GO
--Get existing server level collation
SELECT SERVERPROPERTY('Collation') As [Instance Level Collation]
इस स्क्रिप्ट के बारे में अधिक जानकारी के लिए मेरा पिछला लेख पढ़ें।
अब, स्क्रिप्ट बनाएं generate उत्पन्न करें भविष्य के संदर्भ और सत्यापन के लिए SQL सर्वर इंस्टेंस पर बनाए गए सभी लॉगिन और नौकरियों के लिए। साथ ही, आप SQL सर्वर इंस्टेंस से सभी लॉगिन और नौकरियों की सूची लाने के लिए नीचे दी गई स्क्रिप्ट चला सकते हैं।
--Get list of logins
Use master
Go
Select * from syslogins
--Get list of Jobs
USE msdb
Go
Select * from sysjobs
इंस्टेंस पुनर्निर्माण
एक बार जब आप पूर्वापेक्षा अनुभाग में उल्लिखित चरणों को पूरा कर लेते हैं, तो अगला चरण संयोजन परिवर्तन की प्रक्रिया शुरू करना है। जैसा कि हमने बैकअप लिया है या उपयोगकर्ता डेटाबेस से सभी डेटा निर्यात किया है, हमें SQL सर्वर इंस्टेंस से सभी उपयोगकर्ता डेटाबेस को अलग करने की आवश्यकता है। यदि आप निर्यात किए गए डेटा को नए डेटाबेस में आयात करना चाहते हैं तो आप उन्हें छोड़ भी सकते हैं। मैं आपके डेटाबेस की एक सुरक्षित प्रति रखने के लिए उन्हें अलग करने का सुझाव दूंगा ताकि आप संयोजन परिवर्तन के बाद उन्हें संलग्न कर सकें।
सर्वर-स्तरीय संयोजन को बदलने की प्रक्रिया के लिए सिस्टम डेटाबेस के पुनर्निर्माण की आवश्यकता होती है। सिस्टम डेटाबेस का पुनर्निर्माण करते समय हमें एक नया संयोजन नाम पास करने की आवश्यकता है। सिस्टम डेटाबेस ऑपरेशन के पुनर्निर्माण के लिए SQL सर्वर इंस्टॉलेशन सेटअप की आवश्यकता होती है। आइए सर्वर-स्तरीय संयोजन को बदलने के लिए सिस्टम डेटाबेस के पुनर्निर्माण कार्य को प्रारंभ करें।
अपने लक्ष्य प्रणाली में लॉगिन करें जिसके लिए आप संयोजन बदल रहे होंगे। विंडोज कमांड प्रॉम्प्ट या पावरशेल टर्मिनल विंडो खोलें। पावरशेल खोलें, फिर टाइप करें cmd विंडोज कमांड प्रॉम्प्ट उपयोगिता का उपयोग करने के लिए जैसा कि नीचे की छवि में दिखाया गया है। अपना निर्देशिका स्थान बदलें जहाँ आपने अपनी SQL सर्वर स्थापना सेटअप फ़ाइलें रखी हैं।
--Open Windows Command prompt
Cmd
--Change directory where you have placed SQL Server setup files
Cd <Full path>
--My location was C:\Manvendra\SQL2019\Developer_ENU so i executed below cmd
cd C:\Manvendra\SQL2019\Developer_ENU
अब मैं उस स्थान पर हूँ जहाँ SQL सर्वर स्थापना फ़ाइलें सहेजी गई हैं।
इसके बाद, हम सभी सिस्टम डेटाबेस के पुनर्निर्माण के लिए नीचे दी गई कमांड चलाएंगे। इसके अतिरिक्त, हमें इस SQL सर्वर इंस्टेंस और सभी सिस्टम डेटाबेस के लिए इसे बदलने के लिए नीचे दिए गए कमांड को एक नए कोलेशन पैरामीटर के साथ चलाना होगा।
--Rebuild system databases with new collation. Replace all values in <> with your desired value.
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=<InstanceName>
/SQLSYSADMINACCOUNTS=<accounts> / SAPWD= <StrongPassword>
/SQLCOLLATION=<CollationName>
--I replaced all values and executed the below command with collation SQL_Latin1_General_CP1_CS_AS
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=WIN-AFNHJ3L1D6E\Administrator /[email protected] /SQLCOLLATION=SQL_Latin1_General_CP1_CS_AS
इसका आउटपुट आप नीचे स्क्रीनशॉट में देख सकते हैं। आपको स्क्रीन को वैसे ही छोड़ देना चाहिए और स्क्रीन को तब तक चलने देना चाहिए जब तक आपको कार्यशील निर्देशिका नहीं मिल जाती।
यहां, हमें संकेत मिला है। इसका मतलब है कि इस SQL सर्वर इंस्टेंस के लिए सिस्टम डेटाबेस को एक नए संयोजन के साथ बनाया गया है। आइए इसे सत्यापित करें।
सुनिश्चित करें कि SQL सर्वर चल रहा है और इसकी सेवाएँ लॉन्च की गई हैं। अब SQL सर्वर प्रबंधन स्टूडियो शुरू करें या sqlcmd SQL सर्वर आवृत्ति से कनेक्ट करने के लिए। आप देख सकते हैं, मैंने SQL सर्वर इंस्टेंस से सफलतापूर्वक कनेक्ट किया है जिसे उपरोक्त चरणों में बनाया गया था। हम नीचे दी गई छवि में केवल सिस्टम डेटाबेस देख सकते हैं।
डेटाबेस-स्तर और सर्वर-स्तरीय संयोजन विवरण एकत्र करने के लिए नीचे दिए गए T-SQL कथन चलाएँ। यह चरण सर्वर और सिस्टम डेटाबेस संयोजन के परिवर्तन को मान्य करेगा।
--Get collation of the SQL Server Instance and all databases
SELECT name, collation_name
FROM sys.databases
GO
--Get an existing server-level collation
SELECT SERVERPROPERTY('Collation') As [Instance Level Collation]
सभी सिस्टम डेटाबेस के लिए सर्वर-स्तरीय और डेटाबेस-स्तरीय संयोजन SQL_Latin1_General_CP1_CS_AS का उपयोग करते हैं नीचे स्क्रीनशॉट में। यह चरण पुष्टि करता है कि इस SQL सर्वर आवृत्ति पर एक नया संयोजन कॉन्फ़िगर किया गया था।
सर्वर-स्तरीय संयोजन को नए संयोजन में बदल दिया गया है। अगला चरण उन सभी उपयोक्ता डेटाबेसों को संलग्न करना है जो सिस्टम डेटाबेस के पुनर्निर्माण से पहले अलग किए गए थे। याद रखें, सभी मौजूदा डेटाबेस जिन्हें संलग्न या पुनर्स्थापित किया जाना है, उनका वही संयोजन होगा जिसके तहत उनका बैकअप या अलग किया गया था। सर्वर-स्तरीय संयोजन परिवर्तन के बाद आपको इसे मैन्युअल रूप से बदलने की आवश्यकता है। हालांकि, सभी नए बनाए गए डेटाबेस में डिफ़ॉल्ट रूप से एक नया संयोजन होगा।
मैंने अपना उपयोगकर्ता डेटाबेस संलग्न किया है जैसा कि नीचे दी गई छवि में दिखाया गया है।
एक बार डेटाबेस संलग्न हो जाने के बाद, आप इन डेटाबेसों के मिलान की फिर से जाँच कर सकते हैं। यदि आप इन डेटाबेस के संयोजन को बदलना चाहते हैं, तो इसे पूरा करने के लिए आप मेरा पिछला लेख पढ़ सकते हैं।
निष्कर्ष
यदि आपने डेटाबेस से डेटा निर्यात किया है, तो आप डेटाबेस ऑब्जेक्ट बनाने के लिए पूर्वापेक्षा के दौरान उत्पन्न सभी स्क्रिप्ट निष्पादित कर सकते हैं। फिर आप इन नए बनाए गए डेटाबेस और ऑब्जेक्ट्स में निर्यात किए गए डेटा को आयात कर सकते हैं। हम पूर्वापेक्षा अनुभाग में प्राप्त विवरण के अनुसार सर्वर-स्तरीय कॉन्फ़िगरेशन को सत्यापित और संशोधित कर सकते हैं।
आप सिस्टम डेटाबेस फ़ाइलों को भी स्थानांतरित कर सकते हैं यदि आप उन्हें एक विशिष्ट स्थान पर रखना चाहते हैं क्योंकि सिस्टम डेटाबेस पुनर्निर्माण उन्हें एक डिफ़ॉल्ट स्थान पर बना देगा। पहले जेनरेट की गई स्क्रिप्ट की मदद से लॉगिन और जॉब सृजित करने के लिए स्क्रिप्ट को निष्पादित करना भी संभव है। सिस्टम डेटाबेस को पुनर्स्थापित न करें क्योंकि यह उस डेटाबेस के लिए नए-कॉन्फ़िगर किए गए कॉलेशन को पुराने वाले में बदल देगा।
कृपया इस लेख को साझा करें और हमें अपनी प्रतिक्रिया दें, ताकि हम सुधार कर सकें।