मैं सभी डेटाबेस को एक एकल टकराव पर मानकीकृत करने की कोशिश कर रहा हूं - लैटिन 1_जनरल_सीआईएएएस (मानक टकराव)। मेरे पास कुछ डेटाबेस हैं जो SQL_Latin1_General_CP1_CI_AS में हैं।
मुझे पता है कि मैं डेटाबेस को बदलने के लिए ALTER DATABASE का उपयोग कर सकता हूं, लेकिन यह केवल नई वस्तुओं को प्रभावित करता है। मेरी समझ यह है कि मौजूदा कॉलम को बदलने का एकमात्र तरीका प्रत्येक तालिका में प्रत्येक कॉलम पर ALTER COLUMN करना है - और मुझे ऐसा करने के लिए सभी अनुक्रमितों को छोड़ने और पुन: बनाने की आवश्यकता होगी।
मुझे लगता है कि यह कुछ इस तरह दिखेगा:
DROP INDEX indexname ON tablename
GO
ALTER TABLE tablename ALTER COLUMN columname varchar(50) COLLATE Latin1_General_CI_AS NULL
GO
CREATE CLUSTERED INDEX indexname ON tablename (columname ASC)
और पूरे डेटाबेस में हर varchar, char, text, nvarchar, nchar और ntext कॉलम के लिए दोहराएँ। यह एक विशाल एसक्यूएल स्क्रिप्ट होगी।
क्या ऐसा करने का एक आसान तरीका है, या कोई इसे करने के लिए SQL स्क्रिप्ट के निर्माण को स्वचालित करने का एक तरीका सुझा सकता है?