स्तंभ की चौड़ाई बदलना


39

क्या एक स्तंभ (नवरचर्च) की चौड़ाई बढ़ाने से तालिका को गिराने की आवश्यकता होगी?

दूसरे शब्दों में, क्या सक्रिय उपयोगकर्ताओं के साथ उत्पादन परिवेश में चौड़ाई को बदला जा सकता है?

मुझे लगा कि यदि आकार बढ़ रहा है (घटने के विपरीत) तो यह समस्या नहीं होगी।

जवाबों:


52

यदि आप इसे नीचे के रूप में एक टी-एसक्यूएल स्टेटमेंट के माध्यम से कर रहे हैं, तो कोई तालिका ड्रॉप नहीं होगी और आप इसे सुरक्षित रूप से उत्पादन वातावरण में कर सकते हैं:

alter table <table> alter column <column> nvarchar(biggernumber) [not] null

यदि आप इसे SSMS डिज़ाइन टेबल GUI के माध्यम से करते हैं, तो यह इस बात पर निर्भर करेगा कि परिवर्तन को लागू करने के लिए यह किस स्क्रिप्ट का उपयोग करता है। कभी-कभी यह एक अस्थायी तालिका में डेटा सम्मिलित करेगा, मूल तालिका को गिराएगा, उस तालिका का एक नया संस्करण बनाएगा, और इसे नए में वापस सम्मिलित करेगा। यह पता लगाने का एक आसान तरीका है कि "स्क्रिप्ट को उत्पन्न करें" बटन पर क्लिक करें और निष्पादित करने की योजना टी-एसक्यूएल को देखें।


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

1
यह त्रुटि को फेंक देता है, लेकिन यह स्क्रिप्ट को तब तक नहीं चलाता है जब तक आप स्क्रिप्ट के साथ विंडो पर ओके (या रन या जो भी) पर क्लिक नहीं करते हैं। आप स्क्रिप्ट की प्रतिलिपि बना सकते हैं और उस विंडो को रद्द कर सकते हैं जो आपको स्क्रिप्ट दिखाती है।
मर्देनी

लेकिन क्या यह फ्लोट से दशमलव में परिवर्तन (n, n) पर काम करता है?
निशांत शान

यदि तालिका को दोहराया जाता है तो इसका क्या प्रभाव पड़ता है? मैं मान रहा हूं कि सब्सक्राइबर टेबल अपने आप अपडेट नहीं होंगे?
tmwoods

18

कॉलम की कॉलम चौड़ाई बढ़ाने से nvarcharटेबल ड्रॉप की आवश्यकता नहीं होगी। न ही कोई ALTER TABLEऑपरेशन। तालिका या स्तंभ गुणों को बदलते समय प्रतिबंध के बारे में जानकारी के लिए आप ALTER TABLE स्टेटमेंट पर पढ़ सकते हैं ।

मैंने नीचे दिए गए प्रलेखन से सबसे अधिक प्रासंगिक भागों की प्रतिलिपि बनाई:

एक स्तंभ का आकार बदलना

आप स्तंभ रंग खण्ड में स्तंभ डेटा प्रकार के लिए एक नए आकार को निर्दिष्ट करके किसी स्तंभ की लंबाई, सटीकता या पैमाने को बदल सकते हैं। यदि डेटा स्तंभ में मौजूद है, तो नया आकार डेटा के अधिकतम आकार से छोटा नहीं हो सकता है। इसके अलावा, स्तंभ को एक सूचकांक में परिभाषित नहीं किया जा सकता है, जब तक कि स्तंभ एक varchar, nvarchar, या varbinary डेटा प्रकार नहीं है और सूचकांक एक PRIMARY KEY बाधा का परिणाम नहीं है। उदाहरण देखें पी।

ताले और अन्य टेबल

ALTER TABLE में निर्दिष्ट परिवर्तन तुरंत लागू हो जाते हैं। यदि परिवर्तनों को तालिका में पंक्तियों के संशोधनों की आवश्यकता होती है, तो ALTER TABLE पंक्तियों को अपडेट करती है। अन्य तालिका में तालिका के लिए एक स्कीमा संशोधित लॉक प्राप्त होता है जो यह सुनिश्चित करने के लिए होता है कि परिवर्तन के दौरान तालिका के लिए कोई अन्य कनेक्शन संदर्भ मेटाडेटा भी न हो, सिवाय ऑनलाइन इंडेक्स ऑपरेशंस के जिन्हें अंत में बहुत ही कम SCH-M लॉक की आवश्यकता होती है। ALTER TABLE… SWITCH ऑपरेशन में, लॉक को स्रोत और लक्ष्य तालिकाओं दोनों पर अधिग्रहित किया जाता है। तालिका में किए गए संशोधन लॉग और पूरी तरह से पुनर्प्राप्त करने योग्य हैं। परिवर्तन जो बहुत बड़ी तालिकाओं में सभी पंक्तियों को प्रभावित करते हैं, जैसे कि स्तंभ को छोड़ना या डिफ़ॉल्ट रूप से NOT NULL कॉलम जोड़ना, कई लॉग रिकॉर्ड को पूरा करने और उत्पन्न करने में लंबा समय ले सकता है। किसी भी INSERT, UPDATE, की तरह ही सावधानीपूर्वक इन कथनों को निष्पादित किया जाना चाहिए।


साथ ही शानदार जवाब। लेकिन मैं केवल एक चुन सकता था। धन्यवाद!
फर्नांडो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.