2010-11-12 19 views
8

मैं एसक्यूएल सर्वर 2008 में मूल एक के लिए एक पहचान स्तंभ वर्तमान मान पुनर्स्थापित करने के लिएडेटाबेस पर Reseed पहचान कॉलम

DBCC CHECKIDENT(<table_name>, RESEED, value) 

आदेश का उपयोग कर सकते हैं?

यदि हां, तो क्या यह कोई कमी होने के बिना इस ऑपरेशन को करने का सही तरीका है? यदि नहीं, तो क्या ऐसा करने का एक वैकल्पिक तरीका है?

+1

आपका प्रश्न क्या है? – Andomar

+2

वास्तव में यहां तीन प्रश्न हैं। मुझे यकीन है कि आप उन्हें देख सकते हैं ... यदि आपको और स्पष्टीकरण की आवश्यकता है तो बस – Lorenzo

उत्तर

7

क्या मैं SQL सर्वर 2008 में मूल कॉलम के लिए एक मौजूदा कॉलम वर्तमान मान को रीसेट करने के लिए डीबीसीसी चेककिडेंट कमांड का उपयोग कर सकता हूं?

हां।

यदि हां, तो क्या यह कोई कमी होने के बिना इस ऑपरेशन को करने का सही तरीका है?

यह करने का यह एक दस्तावेज तरीका है।

संभावित दोष: आप डुप्लिकेट IDENTITY मान प्राप्त कर सकते हैं - SQL सर्वर से कोई गारंटी नहीं है कि यह उस मान को वापस नहीं देगा जो पहले से उपयोग में नहीं है।

उदा। यदि आपका IDENTITY वर्तमान में 100 है, और आप इसे 1 तक रीसेट करते हैं, तो संभावनाएं जल्द या बाद में होती हैं, यह एक मान का उत्पादन करेगी जो पहले से ही उपयोग में है।

SQL सर्वर में लागू किए गए IDENTITY मौजूदा मानों या किसी भी चीज़ की जांच नहीं करता है - यह केवल अनुक्रमिक संख्याएं उत्पन्न करता है। यह आपके ऊपर है - विशेष रूप से यदि आपने पर IDENTITY पर यह सुनिश्चित करने के लिए किया है कि मान डुप्लीकेट नहीं हैं।

10

मूल्य छोड़ा जा सकता है। पहले से प्रयोग में संख्या के अनुसार - तो अगर आप

DBCC CHECKIDENT (<table_name>, RESEED); 

एसक्यूएल सर्वर सेट सही अगले संख्या के अध्यक्ष मूल्य का उपयोग करें। मुझे पहचानने वाले पहचान मूल्यों का शोध करने का यही एकमात्र तरीका है।

+0

पूछें, मैंने तब तक काम नहीं किया जब तक मैंने संशोधित मूल्यों को स्पष्ट रूप से – Niraj

+0

ईजी प्रदान नहीं किया: 2000 से शुरू होने के लिए अपनी पहचान सेट करना: 'डीबीसीसी अध्यक्ष (, RESEED, 2000) ' – Tr1stan

0

यदि यह फ़ील्ड किसी अन्य तालिका में किसी भी विदेशी कुंजी के लिए प्राथमिक कुंजी और संदर्भ है तो यह एक बड़ी कमी है। शोधन क्षेत्र में इंडेक्स वाले लेनदेन तालिका में रिकॉर्ड लाने में मदद करता है।

संबंधित मुद्दे