Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक विशाल तालिका में स्तंभ प्रकार बदलें

आप जो परिवर्तन कर रहे हैं उसके आधार पर, कभी-कभी रखरखाव विंडो लेना आसान हो सकता है। उस विंडो के दौरान (जहां कोई भी तालिका में डेटा को बदलने में सक्षम नहीं होना चाहिए) आप यह कर सकते हैं:

  1. पुराने कॉलम को इंगित करने वाले किसी भी इंडेक्स/बाधाओं को छोड़ दें, और ट्रिगर अक्षम करें
  2. एक नया अशक्तजोड़ें नए डेटा प्रकार के साथ कॉलम (भले ही यह NULL न हो)
  3. नए कॉलम को पुराने कॉलम के मान के बराबर सेट करते हुए अपडेट करें (और आप इसे अलग-अलग लेन-देन के हिस्से में कर सकते हैं (जैसे, UPDATE TOP (10000) ... SET newcol = oldcol WHERE newcol IS NULL ) और अपने लॉग को ओवररन करने से बचने के लिए CHECKPOINT के साथ)
  4. एक बार सभी अपडेट हो जाने के बाद, पुराने कॉलम को छोड़ दें
  5. नए कॉलम का नाम बदलें (और यदि उपयुक्त हो तो NOT NULL बाधा जोड़ें)
  6. अनुक्रमणिका का पुनर्निर्माण करें और आंकड़े अपडेट करें

यहां कुंजी यह है कि यह आपको चरण 3 में क्रमिक रूप से अद्यतन करने की अनुमति देता है, जो कि आप एक ALTER TABLE कमांड में नहीं कर सकते।

यह मानता है कि कॉलम डेटा अखंडता में एक प्रमुख भूमिका नहीं निभा रहा है - यदि यह विदेशी कुंजी संबंधों के समूह में शामिल है, तो और भी कदम हैं।

संपादित करें

इसके अलावा, और बस जोर से सोच रहा था, मैंने इसके लिए कोई परीक्षण नहीं किया है (लेकिन इसे सूची में जोड़ रहा हूं)। मुझे आश्चर्य है कि क्या पृष्ठ + पंक्ति संपीड़न यहाँ मदद करेगा? यदि आप एक INT को BIGINT में बदलते हैं, तो संपीड़न के साथ SQL सर्वर को अभी भी सभी मानों का इलाज करना चाहिए जैसे कि वे अभी भी एक INT में फिट हैं। दोबारा, मैंने परीक्षण नहीं किया है कि क्या यह तेजी से या धीमी गति से बदलाव करेगा, या पहले स्थान पर संपीड़न जोड़ने में कितना समय लगेगा। बस इसे वहीं फेंक दो।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RML यूटिलिटीज टूल के माध्यम से SQLDIAG प्रदर्शन डेटा की रिपोर्ट करना | SQL सर्वर प्रदर्शन समस्या निवारण -7

  2. SQL सर्वर में वर्तमान सत्र का एप्लिकेशन नाम प्राप्त करने के लिए APP_NAME () का उपयोग करें

  3. सेकंड के बिना डेटटाइम मान डेटा से निकालने का एक तरीका

  4. वर्ण लंबाई में 900 बाइट अनुक्रमणिका आकार सीमा

  5. एसक्यूएल सर्वर 2016