2008-12-30 11 views
5

मैं किसी मौजूदा डेटाबेस में कुछ स्कीमा परिवर्तनों पर काम कर रहा हूं।SQL सर्वर रोलबैक स्क्रिप्ट बनाने का सबसे अच्छा तरीका?

मैंने एक dev प्रति प्राप्त करने के लिए डेटाबेस का बैक अप लिया, और मेरे परिवर्तन किए हैं। मैं एक ही लेनदेन में उत्पादन मशीन में बदलावों को माइग्रेट करने के लिए एक एकल रोल स्क्रिप्ट तैयार करूंगा।

क्या एक तैनाती समस्या उत्पन्न रोलबैक स्क्रिप्ट बनाने के लिए कोई सबसे अच्छा अभ्यास है? इससे पहले कि मैं हाथ से तो लिखा है निम्न पद्धति का उपयोग कर: नए कॉलम को दूर करने के

  • ड्रॉप नई बाधाओं और अनुक्रमित
  • ऑल्टर टेबल
  • ड्रॉप जोड़ा टेबल
  • लेनदेन प्रतिबद्ध

क्या कोई बेहतर दृष्टिकोण है?

उत्तर

4

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

1

यदि यह अपेक्षाकृत छोटा डेटाबेस है तो आप अपग्रेड लागू करने से पहले बैकअप लें। यदि यह सब खराब हो जाता है तो आप एक बहाली करते हैं।

एक बार यह लाइव हो जाता है और नया डेटा दर्ज हो जाता है तो आप वास्तव में इसे वापस रोल नहीं कर सकते हैं। आपको बस समस्याओं को ठीक करना होगा।

+0

हम बैकअप नहीं बना सकते हैं और इस मशीन पर बैकअप से बहाल कर सकते हैं। यह एक लेनदेन के रूप में आगे और पीछे की ओर रोल करने की जरूरत है। – FlySwat

4

आप पांचवें कदम

  • ड्रॉप नई बाधाओं और सूचियों को याद कर रहे हैं
  • ऑल्टर टेबल नए कॉलम
  • ड्रॉप जोड़ा टेबल
  • लेन-देन से बाहर
  • टेस्ट नरक को दूर करने के लिए प्रतिबद्ध उत्पादन में इसे चलाने से पहले स्क्रिप्ट

RoRmigrationsdo जैसे परिवर्तनों को पंजीकृत करने के लिए एक और अधिक कुशल दृष्टिकोण है। प्रत्येक डीबी परिवर्तन के लिए आप एक स्क्रिप्ट बनाते हैं जो दोनों परिवर्तन को लागू करेंगे और इसे वापस रोल करेंगे (आपकी पसंद पर, बिल्कुल)। फिर आप अपने कोड की तरह वर्जन नियंत्रण के तहत उन स्क्रिप्ट्स को प्राप्त कर सकते हैं।

इसके अतिरिक्त, यदि आप डेटाबेस में संस्करण संख्या रखते हैं तो आप प्रत्येक स्क्रिप्ट को संस्करण संख्या के साथ पहचानकर और इसे क्रियान्वित कार्रवाई के अनुसार डेटाबेस में संस्करण संख्या को कम करके इसे और अधिक स्वचालित कर सकते हैं।

1

यदि आप Redgate's SQL तुलना जैसे टूल का उपयोग करते हैं, तो आप दोनों डेटाबेसों के बीच तुलना को दोनों तरीकों से तुलना कर सकते हैं और स्क्रिप्ट बनाने के लिए दोनों का उपयोग कर सकते हैं। प्रोड स्क्रिप्ट के लिए देव में आपके द्वारा किए जा रहे परिवर्तन होंगे और देव स्क्रिप्ट के लिए prd मूल उत्पादन डेटाबेस स्थिति में वापस आ जाएगा। यह सुनिश्चित करता है कि आप किसी भी स्क्रिप्ट में कुछ भी न भूलें।

0

SQL सर्वर 2005 या आप भी एक डेटाबेस स्नैपशॉट बना सकते हैं नए के साथ, यह है कि आप किसी भी समय वापस है कि राज्य में जाने के लिए अनुमति देता है। अधिक जानकारी के लिए इस पेज देखें:

http://msdn.microsoft.com/en-us/library/ms175158.aspx

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