2010-03-12 8 views
11

मैं सोच रहा हूँ अगर वहाँ इस तरह एक स्क्रिप्ट का निर्माण करने के लिए MSSQL प्रबंधन स्टूडियो के लिए मजबूर करने का एक तरीका है: जब मैं एक बहुत ही सरल संपत्ति बदलजबरदस्ती प्रबंधन स्टूडियो ड्रॉप के बजाय ALTER तालिका का उपयोग करने/बनाएँ

ALTER TABLE Mytable 
ADD MyCol bit NOT NULL 
CONSTRAINT MyColDefault 
DEFAULT 0 WITH VALUES 


ALTER TABLE [dbo].Mytable 
ALTER COLUMN MyCol2 int NULL 

GO 

एक टेबल पर एक स्तंभ के। यदि मैं इसे डिज़ाइनर में करता हूं और उत्पादित स्क्रिप्ट के लिए पूछता हूं, तो स्क्रिप्ट इस तरह के सरल कार्य नहीं करती है, बल्कि इसके बजाय सभी डेटा को एक tmp तालिका में कॉपी करता है, मूल तालिका छोड़ देता है, मूल तालिका नाम के साथ tmp तालिका का नाम बदलता है । और, ज़ाहिर है, हर बाधा और रिश्तों को छोड़ देता है और पुनर्जीवित करता है।

क्या कोई विकल्प है जो मैं इस व्यवहार को बदलने के लिए बदल सकता हूं? या, यह संभव हो सकता है, क्या ऊपर कुछ सरल खतरे का उपयोग करने में कुछ खतरे नहीं हैं?

धन्यवाद।

+0

कभी इस मार्को को करने का कोई तरीका ढूंढें? – AnotherDeveloper

उत्तर

5

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

7

हाँ आप कर सकते हैं!

SQL सर्वर प्रबंधन स्टूडियो में, तालिका में तालिका के लिए तालिका डिज़ाइन मोड में जाएं, और अपने परिवर्तन करें। हालांकि: "सहेजें" बटन पर क्लिक करें, लेकिन इसके बजाय तालिका डिज़ाइन व्यू में राइट-क्लिक करें, आपके संदर्भ मेनू के अंत में "जनरेट स्क्रिप्ट जेनरेट" आइटम होना चाहिए।

alt text http://i40.tinypic.com/33e7ite.png

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

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

+1

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

-1

आसान! बस Tool ->Option पर जाएं, फिर Designer नोड पर जाएं और Table and Database designer का चयन करें ताकि आप Prevent saving changes that require ... चेकबॉक्स को अनचेक कर सकें।

अब आप अपने टेबल डिज़ाइन पर कोई भी टुकड़ा कर सकते हैं!

+3

इससे आपको अपने परिवर्तनों को सहेजने के बजाय त्रुटि मिल जाएगी - यह डिज़ाइनर उपयोगकर्ता को वैकल्पिक तालिका नहीं बनायेगी। –

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