लाइव ठेस मेज पर varchar की लंबाई बदलें


25

मेरे पास वर्तमान में उत्पादन ऐप के साथ MS SQL Server 2008 R2 DB सर्वर है।

ऐप में एक नई वृद्धि के लिए अब varchar(100)लंबाई में वृद्धि की जाने वाली तालिका में एक कॉलम की आवश्यकता है ।

क्या मौजूदा डेटा को प्रभावित किए बिना, prod DB में इस मौजूदा कॉलम की लंबाई बढ़ाई जा सकती है?

क्या सेवा में व्यवधान से बचने के लिए ऑफ-ऑवर के दौरान यह बदलाव पूरा करना पड़ता है?

जवाबों:


42

यदि आप इसे बढ़ा रहे हैं varchar(100 - 8000)(यानी इसके अलावा कुछ भी varchar(max)) और आप SSMS GUI के बजाय TSQL के माध्यम से ऐसा कर रहे हैं

ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL

और से स्तंभ nullability फेरबदल नहीं NULLकरने के लिए NOT NULL(जो तालिका लॉक होगा जबकि सभी पंक्तियों मान्य किए जाते हैं और संभवतः के लिए लिखा है) या से NOT NULLकरने के लिए NULL कुछ परिस्थितियों में तो यह एक त्वरित मेटाडाटा केवल परिवर्तन है। इसे SCH-Mमेज पर ताला लगाने की प्रतीक्षा करने की आवश्यकता हो सकती है , लेकिन एक बार यह प्राप्त हो जाता है कि परिवर्तन बहुत अधिक त्वरित होगा।

इसके बारे में पता करने के लिए एक चेतावनी यह है कि एक SCH-Mलॉक के लिए प्रतीक्षा के दौरान अन्य प्रश्नों को कतार से आगे कूदने के बजाय अवरुद्ध कर दिया जाएगा ताकि आप SET LOCK_TIMEOUTपहले जोड़ने पर विचार करना चाहें ।

यह भी सुनिश्चित करें कि ALTER TABLEआपके द्वारा बताए गए विवरण में यह स्पष्ट है NOT NULLकि यदि मूल कॉलम स्थिति है अन्यथा अनुमति देने के लिए कॉलम को बदल दिया जाएगा NULL


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