2010-10-19 15 views
15

मुझे SQL सर्वर कॉम्पैक्ट संस्करण में कॉलम का नाम बदलने में समस्याएं आ रही हैं। मुझे पता है कि आप sp_rename का उपयोग कर तालिका का नाम बदल सकते हैं, लेकिन यह कॉलम के साथ काम नहीं करता है।माइक्रोसॉफ्ट एसक्यूएल कॉम्पैक्ट संस्करण कॉलम का नाम बदलें

मैंने एक विकल्प खोजा है, लेकिन मुझे कोई नहीं मिला है।

क्या मैं एक कॉलम हटा सकता हूं और फिर एक विशिष्ट कॉलम के बाद एक नया जोड़ सकता हूं? यदि मैं कॉलम हटा देता हूं और निर्दिष्ट के बाद इसे जोड़ता हूं तो डेटा सही हो जाएगा?

ऐसा लगता है कि एक बार जब आप तालिका बना चुके हैं तो इसे ठीक से संशोधित नहीं किया जा सकता है - क्या यह SQLCE की सीमाओं में से एक है?

उत्तर

2

sp_rename कॉलम के साथ भी काम करता है:

EXEC sp_rename 
objname = '< Table Name.Old Column Name >', 
@newname = '<New Column Name>', 
@objtype = 'COLUMN' 

उदाहरण:

SP_RENAME 'MyTable.[MyOldColumnName]' , '[MyNewColumnName]', 'COLUMN' 



अद्यतन: वास्तव में, sp_rename प्रक्रिया एसक्यूएल ईस्वी में ही उपलब्ध नहीं है! आप http://www.bigresource.com/Tracker/Track-ms_sql-4Tvoiom3/

+0

क्या आप वाकई कॉम्पैक्ट संस्करण के साथ काम करते हैं? मैंने इस प्रश्न को पोस्ट करने से पहले इसे आजमाया है और मैंने आपके उदाहरण का उपयोग करके इसे आजमाया है और यह काम नहीं करता है। यहां मुझे जो मिला है: प्रक्रिया के लिए निर्दिष्ट तर्क मान मान्य नहीं है। [तर्क # = 3, प्रक्रिया का नाम (यदि ज्ञात है) = sp_rename] – lucian

+0

आप सही हैं। माफ़ कीजिये। ऐसा लगता है जैसे SP_rename SQLCE में उपलब्ध नहीं है। मेरा जवाब अपडेट कर रहा है ... – Kamyar

+1

फिर भी मैं तालिका का नाम बदलने के लिए एमएस कॉम्पैक्ट संस्करण 2008 में सफलतापूर्वक EXEC sp_rename 'डेमो', 'पालतू जानवर' का उपयोग कर सकता हूं। लेकिन हाँ कॉलम नाम बदलने के लिए विफल रहा। – msinfo

14

पर समाधान ढूंढ सकते हैं यह वास्तव में लगता है कि SQL CE कॉलम नाम बदलने की अनुमति नहीं देगा।

आप एक नया कॉलम बनाने और पुराने को हटाने के साथ सही रास्ते पर हैं।

यदि आप केवल एक कॉलम जोड़ते हैं और पुराने को हटाते हैं तो आप डेटा खो देंगे ताकि आपको डेटा को पुराने से नए में स्थानांतरित करने के लिए एक अपडेट स्टेटमेंट जारी करने की आवश्यकता हो।

alter Table [dbo].[yourTable] add [newColumn] 

update yourTable set newColumn = oldColumn 

alter Table [dbo].[yourTable] drop column [oldColumn] 

की तर्ज पर

कुछ, अपने नए कॉलम बनाएंगे, वे पुराने से नए के लिए डेटा नकल और फिर पुराने कॉलम निकाल देना चाहिए।

उम्मीद है कि यह मदद करता है!

+1

यह संभव है कि यह काम कर सके, लेकिन नया जोड़ा कॉलम तालिका में अंतिम स्तंभ होगा और मुझे वह नहीं चाहिए। इसके बाद आप निर्दिष्ट कॉलम के बाद जोड़ सकते हैं लेकिन यह सीई में काम नहीं करता है। यह बाद में कीवर्ड नहीं मिल रहा है। यह मेरी क्वेरी है: "वैकल्पिक तालिका इनवर्टर उत्पाद के बाद COLUMN न्यूसी int जोड़ें", यह त्रुटि है: "क्वेरी को पार्स करने में त्रुटि हुई। [टोकन लाइन संख्या = 2, टोकन लाइन ऑफसेट = 21, त्रुटि में टोकन = बाद में] "। – lucian

+0

सीई में आल्टर टेबल अनुपलब्ध प्रतीत होता है कि http://msdn.microsoft.com/en-us/library/ms174123.aspx इसे देखकर कार्यक्षमता मुझे यह सुनिश्चित नहीं है कि आप अपने वर्तमान आदेश को पुनर्निर्माण से कम कैसे सुरक्षित रख सकते हैं टेबल। व्यक्तिगत रूप से मैं इसके बारे में अत्यधिक चिंतित नहीं होगा क्योंकि कॉलम ऑर्डरिंग को मेरे चयन कथन द्वारा वैसे भी निर्दिष्ट किया जाएगा। – Robb

+2

सही समाधान (जब तक कि स्तंभ अनुक्रमणिका का हिस्सा न हो)। पहले कमांड पर डेटा प्रकार याद रखें, या स्क्रिप्ट विफल/असफल/सफल हो जाएगी ... – Geoff

0

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

+0

मैं सहायक होगा, अगर आप एसडीएफ व्यूअर दस्तावेज़ों के लिए एक लिंक प्रदान कर सकते हैं। –

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