2015-03-02 25 views
7

मैं एक मेजस्क्रिप्ट और संग्रहित प्रक्रियाओं

में मौजूद नया नाम, लेकिन यहाँ समस्या मैं स्वयं Triggers या SP's में column name वर्तमान संशोधित करना चाहते हैं के लिए एक स्तंभ नाम संशोधित करना चाहते हैं को तोड़ने के बिना एक स्तंभ का नाम बदल रहा।

क्या ऐसा करने का कोई बेहतर तरीका है।

rename करने के लिए

एक स्तंभ बजे इस

sp_RENAME 'Tablename.old_Column', 'new_column' , 'COLUMN'; 

इसी तरह मैं कैसे triggers या SP's के लिए यह कर सकते हैं का उपयोग कर।? प्रत्येक स्क्रिप्ट खोलने के बिना?

+5

आप कॉलम नाम बदल सकते हैं, फिर पिछले कॉलम नाम के साथ एक गणना कॉलम जोड़ें, और अपने अवकाश पर ट्रिगर्स और संग्रहीत प्रक्रियाओं को बदलें। –

+0

आप सिस टेबल से स्क्रिप्ट कोड प्राप्त करने का प्रयास कर सकते हैं, इसे एक स्क्रिप्ट का उपयोग करके एक चरण में प्रतिस्थापित और पुन: संकलित कर सकते हैं, लेकिन अगर कोई ऑब्जेक्ट नहीं है तो मैं सहीता के लिए प्रत्येक स्क्रिप्ट खोलकर ऐसा करना पसंद करता हूं – jean

+0

इसके अलावा एमएस-एसक्यूएल आप 'alter table dbo.tbBase कॉलम [OriginalName] UNIQUEIDENTIFIER को शून्य पर जाएं – jean

उत्तर

3

ठीक है, वहाँ 3 पार्टी उपकरण है कि के "सुरक्षित नाम बदलने" इस प्रकार का वादा कर रहे हैं का एक समूह, मुक्त करने के लिए कुछ कर रहे हैं और कुछ नहीं कर रहे हैं: के रूप में MWillemse में लिखा

  • ApexSQL कि के लिए एक free tool है, उसका जवाब,
  • रेडगेट का एक वाणिज्यिक उपकरण है जिसे SQLPrompt कहा जाता है, जिसमें एक सुरक्षित नामकरण भी होता है, हालांकि यह मुफ़्त होने से बहुत दूर है।
  • माइक्रोसॉफ्ट के पास SQL Server Data Tools (या लघु संस्करण में एसएसडीटी) नामक एक दृश्य स्टूडियो ऐड-इन है, क्योंकि Dan Guzman ने अपनी टिप्पणी में लिखा था।

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

  • अपनी मेज एसक्यूएल सर्वर बाहर से सीधे पहुँचा जा सकता है:

    एक अन्य विकल्प इससे पहले कि आप शुरू करते हैं, लेकिन वहाँ चीजों के एक जोड़े को ध्यान में रखना करने के लिए कर रहे हैं कोशिश करते हैं और एसक्यूएल स्क्रिप्ट खुद लिखने के लिए है? मेरा मतलब है, क्या यह संभव है कि कुछ सॉफ्टवेयर सीधे उस तालिका पर एसक्यूएल स्टेटमेंट निष्पादित कर रहे हैं? यदि ऐसा है, तो आप उस कॉलम का नाम बदलने पर इसे तोड़ सकते हैं, और इस स्थिति में कोई एसक्यूएल उपकरण मदद नहीं करेगा।

  • क्या आपके एसक्यूएल स्क्रिप्टिंग कौशल वास्तव में अच्छे हैं? मैं खुद को एसक्यूएल सर्वर के साथ काफी अनुभवी मानता हूं, लेकिन मुझे लगता है कि इस तरह की एक स्क्रिप्ट लिखना मेरे कौशल से परे है। यह नहीं कि मेरे लिए यह असंभव है, लेकिन शायद मैं मुफ्त में कुछ पाने के लिए बहुत अधिक समय और प्रयास करूंगा।

    पहले, माइक्रोसॉफ्ट आधिकारिक sys.sql_expression_dependencies के प्रलेखन:

आप इसे अपने आप को लिखने के लिए निर्णय लेते हैं, वहाँ कुछ लेख है कि आप उस कार्य में मदद कर सकता है कर रहे हैं।
दूसरा, Different Ways to Find SQL Server Object Dependencies नामक एक लेख जिसे 13 साल के अनुभव डीबीए, और आखिरी लेकिन कम से कम a related question स्टैक एक्सचेंज के डेटाबेस प्रशासक की वेबसाइट पर लिखा गया है।

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

1
  1. तालिका स्तंभ
  2. नाम बदला जा रहा दृश्य स्टूडियो में टेबल स्तंभ हटाया जा रहा है
  3. ऑल्टर तालिका कुंजी

सबसे अच्छा तरीका उपयोग डाटाबेस परियोजनाओं। देखें इस लिंक

link 1

link 2

1
  1. आप क्या @GorDon सुझाव कर सकते हैं।

  2. इसके अलावा, आप भी इस क्वेरी के साथ,

चयन o.name, अनुसूचित जाति sys.syscomments से अनुसूचित जाति भीतरी sc.id पर ओ sys.objects में शामिल होने के खेल सकते हैं। * = o.object_id जहां चाहते sc.text '% oldcolumnname%'

यह सब proc की सूची वापस आ जाएगी और trigger.Also आप सटीक इसे list.then आप संशोधित करना के लिए बहुत आसान हो जाएगा करने के लिए फिल्टर संशोधित कर सकते हैं मैन्युअल रूप से।

लेकिन जो भी आप तय करते हैं, बस पुराने कॉलम को न छोड़ें। सुरक्षित होने के लिए, यहां तक ​​कि बैक अप रखें।

0

आप उस पाठ को परिभाषा में बदलना चाहते हैं। हालांकि, आपको SQL सर्वर में समर्पित व्यवस्थापक कनेक्शन की आवश्यकता होगी। एक समर्पित व्यवस्थापक कनेक्शन स्थापित करने में संस्करण भी भिन्न होते हैं। उन्नत के तहत; -T7806 जोड़कर स्टार्टअप पैरामीटर सेट अप करना। और व्यवस्थापक जोड़कर: servername में लॉग इन करने से पहले। तब तक, आप परिभाषा के मान को संशोधित करने में सक्षम हो सकते हैं।

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