2011-09-10 9 views
13

जब मैं ARABIC_CS_AS से PERSIAN_100_CS_AS करने के लिए (डेटा सहित) अपने मौजूदा डेटाबेस का मिलान बदलने की कोशिश की निम्न त्रुटि होती है:समस्या

Alter failed for Database 'XXXX'. (Microsoft.SqlServer.Smo)

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

The object 'ItemTables' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
The object 'CK_FilteredReportColumnFilters' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
The object 'CK_FilteredReportColumnFilters_1' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
The object 'CK_FilteredReportColumnFilters_2' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.
The object 'CK_Reports' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it. Remove the dependencies on the database collation and then retry the operation.

ALTER DATABASE failed. The default collation of database 'XXXX' cannot be set to Persian_100_CS_AS. (Microsoft SQL Server, Error: 5075)

त्रुटियों उल्लेख दूर करने के लिए कोशिश कर रहा है उन डेटाबेस ऑब्जेक्ट्स को हटाकर रूपांतरण प्रक्रिया में अन्य शीर्षकों के साथ एक और त्रुटि होती है।

कोई विचार? क्या इस समस्या को हल करने के लिए कोई अच्छी तरह से परिभाषित समाधान है?

+0

संभव डुप्लिकेट [एसक्यूएल 2005 में क्लस्टर किए गए इंडेक्स कॉलम पर कॉलेशन बदलें] (http://stackoverflow.com/questions/581517/change-collation-on-clustered-index-column-in-sql-2005) – gbn

उत्तर

14

आह, यह SQL सर्वर में सबसे बुरी समस्याओं में से एक है: ऑब्जेक्ट बनने के बाद आप संयोजन को बदल नहीं सकते हैं (यह टेबल और डेटाबेस दोनों के लिए सच है ...)।

आप केवल अपना डेटा सहेज सकते हैं (बीसीपी या बैकअप उपयोगिता का उपयोग न करें, आपको उन्हें समान फ़ाइल प्रकारों के एक सीएसवी में रखने की आवश्यकता है ...), डेटाबेस ड्रॉप करें, सही संयोजन के साथ पुन: आयात करें और पुनः आयात करें नए डेटाबेस में डेटा ...

उम्मीद है कि इससे मदद मिलती है।

+0

असल में आप तालिका छोड़ने के बिना कॉलम के संयोजन को बदल सकते हैं। कॉलम के अलावा, जो निर्भर हैं, उदा। गणना कॉलम, बाधाओं या अनुक्रमणिका द्वारा। –

2

मैं एक ही मुद्दा मिल गया है और सभी वस्तुओं कार्यों थे सबसे पहले बनाने के रूप में पूर्ण बैकअप

स्क्रिप्ट समारोह लेता है। हटाएं इन समारोह तो भागो

use master 
go 
ALTER DATABASE xxx SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
go 
ALTER DATABASE xxx COLLATE yyyy 
go 
ALTER DATABASE xxx SET MULTI_USER 
go 

विश्राम कार्यों

मुझे आशा है कि यह उपयोगी।

+0

इस सलाह के साथ क्या गलत है? – fedd

+0

यदि स्कीमा-बाउंड ऑब्जेक्ट उस पर निर्भर करता है तो डेटाबेस संयोजन को बदला नहीं जा सकता है। बाधाओं और संग्रहीत प्रक्रियाओं की जांच करें (यदि मुझे गलत नहीं है), तो संयोजन परिवर्तन की अनुमति नहीं देगा। – Kad

0

बस अपनी डेटाबेस के अनुसार नए डेटाबेस_बी के साथ नया डेटाबेस बनाएं और नए स्रोत से लक्ष्य तक निर्यात करें।

या

उपयोग alt मिलान उपकरण जो सभी त्रुटियों को पार कर जाएगी।

--Appu

+0

alt collation tool क्या है? – AutomationNation

-1

बस अपनी स्ट्रिंग लिखने से पहले एन टाइप करें।

उदाहरण के लिए

:

insert into table values (N'yourstring') 

एन = यूनिकोड।