2009-06-18 23 views
9

में newsequentialid() डिफ़ॉल्ट को सेट करने में त्रुटि मेरे पास एक तालिका में एक अद्वितीय पहचानकर्ता कॉलम है और यह एक कुंजी या अनुक्रमणिका नहीं है। मैं NEWSEQUENTIALID() का उपयोग कर डिफ़ॉल्ट मान सेट करना चाहते हैं, लेकिन मैं त्रुटि मिलती है:एसक्यूएल सर्वर 2008

Error validating default for column..

लेकिन अगर मैं NEWID का उपयोग() कोई त्रुटि। क्या चल रहा है?

संपादित करें: आप केवल त्रुटि संवाद को अनदेखा कर सकते हैं और जारी रख सकते हैं।

+0

SQL2014 में, आप newsequentialid() विधि का उपयोग करने के "uniqueidentifier" के रूप में डेटाप्रकार उपयोग करने की आवश्यकता है और आप किसी भी त्रुटि संदेश नहीं देख सकेंगे। – HPWD

उत्तर

9

के हवाले से this question का जवाब स्वीकार कर लिया।

Workaround: create your table without specifying any default, and then type in this T-SQL statement in a normal query window and run it:

ALTER TABLE dbo.YourTable 
    ADD CONSTRAINT DF_SerialID DEFAULT newsequentialid() FOR SerialID 
+7

मुझे लगता है कि आप केवल त्रुटि विंडो को अनदेखा कर सकते हैं और जारी रख सकते हैं। –

+0

वही बात मेरे साथ हुई जब मैंने एक मौजूदा अद्वितीय पहचानकर्ता कॉलम पर 'अनन्य कुंजी' इंडेक्स जोड़ने की कोशिश की जो पहले से ही 'newsequentialid' के डिफ़ॉल्ट मान के साथ पॉप्युलेट हो चुका था। जब मैंने टेबल को सेव किया, तो मुझे एक ही चेतावनी मिली, लेकिन जैसा कि आपने बताया है, आप केवल चेतावनी को अनदेखा करने के लिए 'हां' पर क्लिक कर सकते हैं और तालिका सफलतापूर्वक सहेजी जाएगी। मैं किसी परिस्थिति या कारण के बारे में नहीं सोच सकता कि यह सफल क्यों नहीं होगा। यह डिफ़ॉल्ट रूप से कॉल नहीं करना चाहिए अगर यह सिर्फ एक तालिका अद्यतन कर रहा है। – Triynko

+0

मुझे पहली बार यह पता लगाना पड़ा कि यह मेरे लिए काम करने के लिए क्या बदलना है। मुझे लगता है कि यह वैकल्पिक तालिका डीबीओ है। आपके टिकाऊ कंसस्ट्रेंट डीएफ_Cओएलयूएम डिफॉल्ट न्यूवर्सेन्डिड() कॉलम के लिए –

0

प्रलेखन के अनुसार: http://msdn.microsoft.com/en-us/library/ms189786.aspx टिप्पणी अनुभाग:

... जब NEWSEQUENTIALID() डिफ़ॉल्ट भाव में प्रयोग किया जाता है, यह अन्य अदिश ऑपरेटरों के साथ संयुक्त नहीं किया जा सकता है। उदाहरण के लिए, आप पर अमल नहीं किया जा सकता है:

CREATE TABLE mytable (Columna uniqueidentifier डिफ़ॉल्ट dbo.myfunction (NEWSEQUENTIALID())) ...

है कि आपके सवाल का जवाब है?

+0

नहीं, मैं SQL सर्वर प्रबंधन स्टूडियो में तालिका डिजाइनर में डिफ़ॉल्ट फ़ील्ड में स्वयं द्वारा NEWSEQUENTIALID() का उपयोग कर रहा हूं। NEWID() हालांकि काम करता है और मैं सिर्फ यह जानना चाहता था कि क्यों। –

+0

मैं देखता हूं कि आपका क्या मतलब है, मैंने अभी परीक्षण किया है और एसएसएमएस 2008 में डिफ़ॉल्ट मान के रूप में NEWSEQUENTIALID() को सेट करते समय मुझे एक त्रुटि मिलती है लेकिन SQL "टेबल बनाएं [डीबीओ] के बाद। [तालिका_1] ([col1] [int] न्यूल , [यूयूआईडी] [अनोखा पहचानकर्ता] पूर्ण वितरण नहीं (न्यूज़क्वेंटिड())) [प्राथमिक] पर "बस ठीक निष्पादित करता है और बाद में तालिका को संपादित करते समय कोई त्रुटि नहीं होती है। एक एसएसएमएस बग मेथिंक की तरह दिखता है। – radekg

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