2012-09-23 14 views
6

का उपयोग करके अद्वितीय पहचानकर्ता बनाता है मेरे पास पांच अलग-अलग स्थानों में user_info तालिका है। अब मुझे सभी पंक्तियों को केंद्रीय user_info तालिका में एकीकृत करने की आवश्यकता है। ऐसा करने के लिए मुझे स्रोत तालिकाओं में प्रत्येक पंक्ति के लिए एक अद्वितीय आईडी चाहिए। क्योंकि जब सभी पंक्तियां केंद्रीय तालिका में आती हैं, तो प्रत्येक उपयोगकर्ता के पास एक अद्वितीय आईडी होनी चाहिए।कैसे SQL सर्वर NEWID()

अब मेरी प्रश्न हैं:

  1. अगर मैं प्रत्येक स्रोत तालिका के लिए uniqueidentifierNEWID() का उपयोग तब किया जाता है यह विश्व स्तर पर & जीवन समय के लिए अद्वितीय हो या डुप्लिकेट किए जाने की किसी भी मौका होगा?

  2. SQL सर्वर NEWID() कैसे बनाता है? मुझे मुख्य पीढ़ी की संरचना जानने की जरूरत है।

उत्तर

7

हां, मशीनों के बीच डुप्लिकेट का कोई मौका नहीं है।

NEWID()छद्म यादृच्छिक संख्या (घड़ी से) और प्राथमिक एनआईसी के मैक पते के संयोजन पर आधारित है।

हालांकि, तालिका में क्लस्टर कुंजी के रूप में इस तरह की यादृच्छिक संख्या डालने प्रदर्शन के लिए भयानक है। आपको NEWSEQUENTIALID() या GUID उत्पन्न करने के लिए COMB-type फ़ंक्शन पर विचार करना चाहिए जो अभी भी स्वीकार्य INSERT प्रदर्शन को बनाए रखने के दौरान NEWID() के टक्कर-से बचने के लाभ प्रदान करता है।

+1

विंडोज एपीआई कॉल एसक्यूएल सर्वर के बारे में कोई दस्तावेज 'NEWID' के लिए उपयोग करता है? मुझे पता है कि 'NEWSEQUENTIALID' मैक पते का उपयोग करता है क्योंकि यह [GUID में स्पष्ट रूप से दिखाई देता है] (http://stackoverflow.com/a/3398847/73226) लेकिन NEWID के लिए कोई दस्तावेज़ नहीं देख सका। –

+0

'CoCreateGuid' सबसे अधिक संभावना है? एरिक लिपर्ट के पास सामान्य रूप से GUID के बारे में [ब्लॉग पोस्ट श्रृंखला] [1] था। यह भी देखें: http://stackoverflow.com/questions/39771/is-a-guid-unique-100-of-the-time 'NEWID()' के लिए तीसरे खंड का पहला हेक्स अंक हमेशा 4 होता है (जब मैं इसे आज़माएं), 'NEWSEQUENTIALID()' के लिए यह उपरोक्त वर्णित मैक पते का उपयोग करता है। मुझे याद नहीं है कि कंप्यूटर में कोई मैक पता नहीं होने पर क्या होता है - किसी को पता है कि इस मामले में एसक्यूएल में क्या होता है? [1]: http://blogs.msdn.com/b/ericlippert/archive/2012/05/07/guid-guide-part-three.aspx – Seph

+0

नया() उपयोग करने में कितना सटीक समय होता है? ऐसा लगता है जैसे मैं एक ही समय में दो आईडी लाता हूं मुझे एक डुप्लिकेट मिलना चाहिए, फिर भी मैंने इसे कभी नहीं देखा है। – jumxozizi