2011-12-29 9 views
5

मैं एक टेबल फ़ील्ड को बदलने की कोशिश कर रहा हूं - इसमें कुछ पंक्तियों के साथ - DateTime से DateTime2(3) तक।एसक्यूएल सर्वर मुझे टेबल को ड्रॉपटाइम करने के लिए टेबलटाइम को डेटटाइम से डेटटाइम 2 (3) में बदलने में सक्षम होने के लिए क्यों मजबूर करता है?

लेकिन SQL सर्वर प्रबंधन स्टूडियो शिकायत करता है कि मैंने तालिका ड्रॉप और फिर से बनाई है।

लेकिन क्यों?

DateTime2(3)DateTime प्रकार से अधिक सटीक है? यह ठीक होना चाहिए, यह नहीं होना चाहिए?

+1

कौन सा * डेटाबेस सिस्टम * आप उपयोग कर रहे हैं? – Lion

+4

@Lion "* प्रबंधन स्टूडियो *" का अर्थ SQL सर्वर है। – Yuck

+1

इसे देखें: http://stackoverflow.com/questions/3896713/sql-server-management-studio-adding-moving-columns-require-drop-and-re-create –

उत्तर

6

एसएसएमएस में एक सेटिंग है जो आपको अपनी इच्छित चीज़ों को करने की अनुमति देगी .. मेनू-टूल्स-विकल्प-डिजाइनर-तालिका परिवर्तनों की आवश्यकता वाले परिवर्तनों को सहेजने से रोकें।

एसएसएमएस में आपके द्वारा किए गए लगभग किसी भी बदलाव को पुनर्जीवित करने की आदत है। कॉलम डेटा प्रकार को इस तरह से बदलने के लिए केवल ठीक होना चाहिए।

alter table TableName alter column ColName datetime2(3) 
3

आप तालिका के पुनर्निर्माण के बिना भी ऐसा कर सकते हैं (प्रबंधन स्टूडियो दृश्यों के पीछे करता है)।

ALTER TABLE T ALTER COLUMN D DateTime2(3) [NOT NULL] 

यह कम संसाधन गहन सामने हो सकता है लेकिन पीछे छोड़ "पुराने" स्तंभ डेटा पन्नों में तो एक प्रभाव चल रही है जब तक आप तालिका पुनर्निर्माण करेंगे।

+0

को पता नहीं था कि तालिका बदलने के बारे में कॉलम को बदलने के बारे में। यह नहीं कह रहा कि आप गलत हैं, लेकिन क्या आपके पास कोई संदर्भ है? धन्यवाद! –

+1

@ बेनहुल [यहां एक है] (http://sqlblog.com/blogs/kalen_delaney/archive/2006/10/13/alter-table-will-not-reclaim-space.aspx) –

+0

अच्छी चीजें। मैंने आज कुछ सीखा। –

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