2009-02-10 13 views
6

के बीच अंतर मैं एक नया SQL सर्वर 2008 सर्वर स्थापित कर रहा हूं और विभिन्न कॉलेशन के संबंध में किसी भी उपयोगी जानकारी प्राप्त करने में कुछ समस्याएं आ रही हैं। मैंने एसक्यूएल सर्वर बीओएल की खोज की है और एक उत्तर के लिए google'ed है लेकिन किसी भी उपयोगी जानकारी को खोजने में सक्षम नहीं लग रहा है।एसक्यूएल सर्वर 2008 - संयोजन प्रकार

  1. विंडोज मिलान "Finnish_Swedish_100" और "Finnish_Swedish" के बीच क्या अंतर है?

    मुझे लगता है कि "_100" -वर्जन SQL सर्वर 2008 में एक अद्यतन संयोजन है, लेकिन यदि ऐसा है तो पुराने संस्करण से क्या चीजें बदली गई हैं?

  2. क्या यह आमतौर पर "Accent-sensitive" सक्षम करने के लिए एक अच्छी बात है? मुझे पता है कि यह कार्य और उन सभी पर निर्भर करता है, लेकिन क्या कोई प्रसिद्ध पेशेवर और विपक्ष विचार करने के लिए है?

  3. "Binary" और "Binary-code point" पैरामीटर, किस मामले में थीज़ को सक्षम किया जाना चाहिए?

उत्तर

0

अपने प्रश्न का समाधान करने के लिए 1. एक्सेंट संवेदनशील फिनिश-स्वीडिश के लिए सक्षम होना एक अच्छी बात है। अन्यथा आपके "å" और "ä" एस को "ए" और "ö" एस "ओ" के रूप में सॉर्ट किया जाएगा। (मान लीजिए कि आप उन तरह के अंतरराष्ट्रीय पात्रों का उपयोग करेंगे)।

अधिक यहाँ: http://msdn.microsoft.com/en-us/library/ms143515.aspx

+0

आह, ठीक है! यह जानना काफी अच्छा था। धन्यवाद! :) – Octadrone

+0

@ ऑक्टैड्रोन: चूंकि आप शायद बता सकते हैं: स्वीडन में उच्चारण वर्णों के लिए अपेक्षित क्रम क्रम क्या है? क्या "å" अलग से सॉर्ट करता है या क्या यह "ए" अक्षर के अन्य रूपों के साथ मिलता है? – Tomalak

+1

अपेक्षित सॉर्ट ऑर्डर है [...] x y z å ä ö। सब अलग अलग। हालांकि, 'वी' और 'डब्ल्यू' को एक ही पत्र के रूप में क्रमबद्ध किया जाता है। –

0

qestion 2 संबोधित करने के लिए (दोनों द्विआधारी कोडपॉइंट और उच्चारण संवेदनशीलता पर चर्चा करता है):

हाँ, लहजे के विशिष्ट भाषा के लिए व्याकरण की आवश्यकता होती है।

3

_100 एसक्यूएल सर्वर 2008 में एक कोलेशन अनुक्रम नया इंगित करता है, जो _90 के साथ 2005 के लिए हैं और कोई प्रत्यय वाले नहीं हैं 2000. मुझे नहीं पता कि मतभेद क्या हैं, और कोई दस्तावेज़ीकरण नहीं मिल रहा है। जब तक आप किसी भिन्न संस्करण के किसी अन्य SQL सर्वर से लिंक किए गए सर्वर क्वेरी नहीं कर रहे हैं, तो मैं _100 के साथ जाने का लुत्फ उठाऊंगा। क्षमा करें मैं मतभेदों में मदद नहीं कर सकता।

+0

ठीक है, जानकारी के लिए धन्यवाद। मैंने "फिनिश_Swedish_100_CI_AS" को एकत्रित करने का निर्णय लिया है क्योंकि डेटाबेस का उपयोग नए अनुप्रयोग मधुमक्खी के साथ किया जाएगा। – Octadrone

2

3 प्रश्न के समाधान के लिए (जानकारी हटा लिया MSDN; शब्दों उनकी, प्रारूप मेरा):

बाइनरी (_BIN):

  • क्रमित करता और SQL सर्वर बिट पैटर्न के आधार पर तालिकाओं में डेटा की तुलना प्रत्येक चरित्र के लिए परिभाषित किया गया।
  • बाइनरी सॉर्ट ऑर्डर केस-संवेदी और उच्चारण-संवेदनशील है।
  • बाइनरी भी सबसे तेज़ सॉर्टिंग ऑर्डर है।
  • यदि यह विकल्प नहीं चुना गया है, तो SQL सर्वर संबंधित भाषा या वर्णमाला के लिए शब्दकोशों में परिभाषित सॉर्टिंग और तुलना नियमों का पालन करता है।

बाइनरी-कोड बिंदु (_BIN2):

  • के लिए यूनिकोड डेटा: क्रमित करता और SQL सर्वर यूनिकोड कोड अंक के आधार पर तालिकाओं में डेटा तुलना करती है।
  • गैर-यूनिकोड डेटा के लिए: द्विआधारी प्रकार के समान तुलनाओं का उपयोग करेगा।

बाइनरी-कोड पॉइंट सॉर्ट ऑर्डर का उपयोग करने का लाभ यह है कि सॉफ़्टवेयर सॉफ़्टवेयर सॉफ़्टवेयर की तुलना करने वाले अनुप्रयोगों में कोई डेटा रिसॉर्टिंग आवश्यक नहीं है। नतीजतन, एक बाइनरी-कोड पॉइंट सॉर्ट ऑर्डर सरल अनुप्रयोग विकास और संभावित प्रदर्शन बढ़ता है।

अधिक जानकारी के लिए, Guidelines for Using BIN and BIN2 Collations देखें।

0

प्रश्न 2 और 3

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

प्रश्न 3 पर विचार करते समय वही प्रश्न लागू होते हैं। (मुझे ज्यादातर इसे टोमालक लिंक से प्राप्त हो रहा है) यदि डेटा केस और उच्चारण संवेदनशील है, तो आप _BIN चाहते हैं, क्योंकि यह तेज़ी से क्रमबद्ध होगा। यदि डेटा अनियमित है, और केस/उच्चारण संवेदनशील नहीं है, तो आप _BIN2 चाहते हैं, क्योंकि यह यूनिकोड डेटा के लिए डिज़ाइन किया गया है।

+0

खुद स्वीडिश होने के नाते मैं आपको सूचित कर सकता हूं कि पत्र हमारी भाषा में अक्सर प्रयोग किया जाता है। इसलिए ज्यादातर मामलों में आप संभावित रूप से उन्हें क्रमबद्ध करने में सक्षम होना चाहते हैं। – Octadrone

+0

मैं अपनी अज्ञानता के लिए क्षमा चाहता हूं, हालांकि, यदि 'ö' उपलब्ध नहीं है, तो क्या आप बस 'ओ' का उपयोग करेंगे या क्या यह पूरी तरह से शब्द को बदल देगा? – DevinB

+1

ज्यादातर मामलों में यह केवल एक शब्द बनायेगा जो वास्तव में ओ के बजाय किसी भी चीज़ के साथ कुछ भी मतलब है।यदि इसका संदर्भ किसी संदर्भ में भी किया जाता है तो मेरा मानना ​​है कि स्वीडन को अर्थ समझने में कोई समस्या नहीं होगी। हालांकि, उपयोगकर्ताओं द्वारा स्वीडिश सिस्टम में åäö का उपयोग करने में सक्षम होने की उम्मीद की जाएगी। :) – Octadrone

3

अक्षरों ÅÄÖ/åäö ए और ओ के साथ मिलकर एआई (एक्सेंट असंवेदनशील) को टक्कर स्थापित करके मिश्रण नहीं करते हैं। हालांकि यह अलग-अलग अक्षरों के रूप में स्वीडिश वर्णमाला का हिस्सा नहीं है और अन्य "संयोजन" के लिए भी सच है। प्रश्न में सेटिंग के आधार पर मिश्रण या मिश्रण नहीं होगा।

चूंकि मेरे पास बहुत सारे पुराने डेटाबेस हैं, इसलिए मुझे अभी भी लिंक करने वाले सर्वरों का उपयोग करने के साथ संवाद करने की आवश्यकता है, मैंने अब FINNISH _SWEDISH _CI _AS चुना है कि मैं SQL2008 स्थापित कर रहा हूं। Windows कॉलेशन पहली बार SQL सर्वर में दिखाई देने पर FINNISH _SWEDISH के लिए यह डिफ़ॉल्ट सेटिंग थी।

2

अपने आप को आजमाने के लिए नीचे दिए गए प्रश्न का प्रयोग करें।

जैसा कि आप देख सकते हैं, या, आदि, उच्चारण अक्षरों के रूप में नहीं गिना जाता है, और फिनिश/स्वीडिश संयोजन का उपयोग करते समय स्वीडिश वर्णमाला के अनुसार क्रमबद्ध किया जाता है।

हालांकि, उच्चारण केवल तभी माना जाता है जब आप AS संयोजन का उपयोग करते हैं। AI संयोजन के लिए, उनका ऑर्डर अपरिवर्तित है, जैसे कि कोई उच्चारण नहीं था।

CREATE TABLE #Test (
    Number int identity, 
    Value nvarchar(20) NOT NULL 
); 
GO 

INSERT INTO #Test VALUES ('àá'); 
INSERT INTO #Test VALUES ('áa'); 
INSERT INTO #Test VALUES ('aa'); 
INSERT INTO #Test VALUES ('aà'); 

INSERT INTO #Test VALUES ('áb'); 
INSERT INTO #Test VALUES ('ab'); 

-- w is considered an accented version of v 
INSERT INTO #Test VALUES ('wa'); 
INSERT INTO #Test VALUES ('va'); 
INSERT INTO #Test VALUES ('zz'); 
INSERT INTO #Test VALUES ('åä'); 
GO 

SELECT Number, Value FROM #Test ORDER BY Value COLLATE Finnish_Swedish_CI_AS; 
SELECT Number, Value FROM #Test ORDER BY Value COLLATE Finnish_Swedish_CI_AI; 
GO 

DROP TABLE #Test; 
GO 
संबंधित मुद्दे