2012-02-22 9 views
55

मैं नीचे कॉलिंग त्रुटि कह रहा हूं क्योंकि मैं डेस्कटॉप मशीन से लैपटॉप में स्थानांतरित हो गया हूं। मेरे डेटाबेस में सैकड़ों संग्रहीत प्रक्रियाएं हैं, इसलिए किसी भी समाधान को ओवरराइड करना या कॉलम के लिए कॉलेशन को ठीक करना मेरे लिए संभव नहीं है।ऑपरेशन के बराबर "SQL_Latin1_General_CP1_CI_AS" और "लैटिन 1_General_CI_AI" के बीच संयोजन संयोजन को हल नहीं कर सकता

SQL_Latin1_General_CP1_CI_AS "और" Latin1_General_CI_AI "आपरेशन के बराबर में" "के बीच मिलान विरोध को हल नहीं कर सकता है"

मेरे समस्या अद्वितीय नहीं है और मैं यह काफी एक बहुत कुछ के लिए खोज की है, लेकिन उपलब्ध समाधान मुझे सुझाव है ओवरराइड करने के लिए कुछ कोड के साथ प्रश्न जो व्यवहार्य नहीं है। कृपया कुछ समाधान सुझाएं जो इस संयोजन की बात से बच सकते हैं।

मैंने अपने डेटाबेस संयोजन को बदलने के लिए यह कोशिश की है।

ALTER DATABASE testDB 
COLLATE French_CI_AI ; 
GO 

धन्यवाद।

उत्तर

90

विभिन्न कॉलेशन के साथ तालिकाओं में शामिल होने पर फ्लाई पर कोलेट करने के लिए बस निम्न वाक्यविन्यास का उपयोग करें। मैं सिस्टम को एकीकृत करता हूं इसलिए इसे आवंटित करना होगा।

select * from [Product] p join [category] c 
on 
c.[Name] collate SQL_Latin1_General_CP1_CI_AS 
= 
p.[Name] collate SQL_Latin1_General_CP1_CI_AS 
+0

:) किसी को भी है कि यह मक्खी –

+1

धन्यवाद मास्टर शैलियाँ पर कर सकते हैं के लिए, आपकी प्रतिक्रिया के लिए, लेकिन यह मेरी मदद करने के लिए के रूप में मेरी समस्या 100 + तालिकाओं के साथ चारों ओर 600 संग्रहित प्रक्रियाओं में फैला हुआ है नहीं जा रहा है। – TechnicalSmile

+0

@MasterStyles मैं पूरे डीबी संयोजन को बदलना चाहता हूं। यह संभव है? – coderwill

6
USE master; 
GO 
ALTER DATABASE PRATAP 
COLLATE Latin1_General_CI_AS_KS_WS ; 
GO 

--Verify the collation setting. 
SELECT name, collation_name 
FROM sys.databases 
WHERE name = N' PRATAP '; 
GO 
संबंधित मुद्दे