सभी डेटा (लॉगिन, लिंक्ड सर्वर, SQL एजेंट जॉब, DB मेल सेटिंग्स, आदि सहित) का निर्यात करना, और इंस्टेंस-स्तर डेटा को फिर से बनाना, और सभी उपयोगकर्ता डेटा को फिर से लोड करना, बहुत काम है। और, उस सब के बाद भी, इस बात की कोई गारंटी नहीं है कि आप डेटाबेस के डिफ़ॉल्ट टकराने को अपडेट कर सकते ALTER DATABASE
हैं क्योंकि ऐसी कई शर्तें हैं जो ऑपरेशन को पूरा करने से रोकेंगी (कृपया विवरण के लिए प्रलेखन के "डेटाबेस कोलाज को बदलना" अनुभागALTER DATABASE
देखें) ।
हालाँकि, एक अनकम्डर्ड विधि है जो बहुत आसान है। मुख्य दोष यह है कि यह असमर्थित है। यह कहना नहीं है कि कुछ भी गलत होगा, बस अगर कुछ करता है, तो Microsoft इसे ठीक करने में मदद नहीं करेगा (क्योंकि उन्होंने कभी गारंटी नहीं दी कि यह काम करेगा)।
मेरे द्वारा बोली जाने वाली विधि स्विच के sqlservr.exe
साथ चल रही है -q {new_collation_name}
। इससे थोड़ा अधिक है, लेकिन यह मूल विचार है। यह विधि बस सिस्टम मेटा-डेटा को अपडेट करती है, जिसमें लाभ और परिणाम होते हैं, जिनमें से मुख्य हैं:
लाभ
- काफ़ी जल्दी
- अधिकांश प्रतिबंधों को बायपास करें जो
ALTER DATABASE
काम करने से रोकते हैं
- किसी भी स्क्रिप्ट की तुलना में कहीं अधिक सटीक होने की संभावना है कि लोग वस्तुओं को छोड़ने और फिर से बनाने के लिए वर्षों से साथ आए हैं
कमियां
- अगर कुछ गलत हो जाता है, तो असमर्थित
VARCHAR
डेटा बदल सकता है, यदि पुराने और नए टकराव के बीच कोड पृष्ठ अलग है, और 128 - 255 (0x80 - 0xFF) के मान वाले वर्ण मौजूद हैं, और वे वर्ण समान कोड वाले समान वर्ण के साथ मौजूद नहीं हैं पृष्ठ। इसलिए डेटा हानि के लिए क्षमता मौजूद है, और यह सुनिश्चित करने के लिए आपके डेटा को पहले शोध करने की आवश्यकता है कि यह स्थिति मौजूद नहीं है। लेकिन, इसका अर्थ यह भी है कि केवल 0 - 127 के मान वाले बहुत से मामले हैं जो किसी भी खतरे में नहीं हैं, भले ही कोड पृष्ठ बदल जाए।
- उपयोगकर्ता-परिभाषित तालिका प्रकार (UDTTs) को छोड़ दिया जाता है और मैन्युअल रूप से अपडेट करने की आवश्यकता होती है।
sqlservr.exe -q
विधि क्या करती है और क्या नहीं करती है, इसके विस्तृत विवरण के लिए (विभिन्न स्तरों पर टकराव कैसे काम करते हैं, और संभावित मुद्दों के बारे में विवरण सहित), कृपया मेरी पोस्ट देखें:
सभी उपयोगकर्ता डेटाबेस में इंस्टेंस, डेटाबेस, और सभी कॉलम के परिवर्तन को बदलना: क्या गलत तरीके से गलत हो सकता है?
(सिस्टम डेटाबेस सहित: केवल उदाहरण को बदलने के लिए master
, model
, msdb
, और tempdb
) और एक या अधिक डेटाबेस (लेकिन सभी डेटाबेस), बस डेटाबेस (रों) अलग है कि आप इस आपरेशन से बाहर करना चाहते, और फिर उन्हें फिर से संलग्न एक बार टकराव अद्यतन पूरा हो गया।