हम सब कुछ स्क्रिप्ट करना चुनते हैं, और इसमें सभी संग्रहीत कार्यविधियाँ और स्कीमा परिवर्तन शामिल हैं। कोई wysiwyg टूल, और कोई फैंसी 'सिंक' प्रोग्राम आवश्यक नहीं हैं।
स्कीमा परिवर्तन आसान हैं, आपको बस उस संस्करण के लिए एक फ़ाइल बनाने और बनाए रखने की ज़रूरत है, जिसमें सभी स्कीमा और डेटा परिवर्तन शामिल हैं। यह संस्करण x से x+1 तक आपकी रूपांतरण स्क्रिप्ट बन जाती है। फिर आप इसे उत्पादन बैकअप के विरुद्ध चला सकते हैं और इसे अपने 'दैनिक निर्माण' में एकीकृत करके सत्यापित कर सकते हैं कि यह त्रुटियों के बिना काम करता है। ध्यान दें कि पहले से लिखित स्कीमा/डेटा लोडिंग एसक्यूएल को बदलना या हटाना महत्वपूर्ण नहीं है क्योंकि आप बाद में लिखे गए किसी भी एसक्यूएल को तोड़ सकते हैं।
-- change #1234
ALTER TABLE asdf ADD COLUMN MyNewID INT
GO
-- change #5678
ALTER TABLE asdf DROP COLUMN SomeOtherID
GO
संग्रहित प्रक्रियाओं के लिए, हम प्रति स्पोक एक फ़ाइल के लिए चुनाव करते हैं, और यह ड्रॉप/क्रिएट फॉर्म का उपयोग करता है। सभी संग्रहीत कार्यविधियाँ परिनियोजन पर पुन:निर्मित की जाती हैं। नकारात्मक पक्ष यह है कि यदि कोई परिवर्तन स्रोत नियंत्रण के बाहर किया गया था, तो परिवर्तन खो गया है। साथ ही, यह किसी भी कोड के लिए सही है, लेकिन आपके डीबीए को इसके बारे में पता होना चाहिए। यह वास्तव में टीम के बाहर के लोगों को आपकी संग्रहीत प्रक्रियाओं के साथ खिलवाड़ करने से रोकता है, क्योंकि उनके परिवर्तन एक अपग्रेड में खो जाते हैं।
Sql सर्वर का उपयोग करते हुए, सिंटैक्स इस तरह दिखता है:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[usp_MyProc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [usp_MyProc]
GO
CREATE PROCEDURE [usp_MyProc]
(
@UserID INT
)
AS
SET NOCOUNT ON
-- stored procedure logic.
SET NOCOUNT OFF
GO
केवल एक चीज जो करना बाकी है वह एक उपयोगिता प्रोग्राम लिखना है जो सभी व्यक्तिगत फाइलों को जोड़ता है और अद्यतनों के पूरे सेट (एक स्क्रिप्ट के रूप में) के साथ एक नई फाइल बनाता है। पहले स्कीमा परिवर्तन जोड़कर और फिर निर्देशिका संरचना और सभी संग्रहीत कार्यविधि फ़ाइलों को शामिल करके ऐसा करें।
सब कुछ स्क्रिप्टिंग करने के लिए, आप एसक्यूएल पढ़ने और लिखने में काफी बेहतर हो जाएंगे। आप इस पूरी प्रक्रिया को अधिक विस्तृत भी बना सकते हैं, लेकिन यह बिना किसी विशेष सॉफ़्टवेयर के सभी sql को स्रोत-नियंत्रित करने का मूल स्वरूप है।
परिशिष्ट:रिक सही है कि आप DROP/CREATE के साथ संग्रहीत प्रक्रियाओं पर अनुमतियां खो देंगे, इसलिए आपको एक और स्क्रिप्ट लिखने की आवश्यकता हो सकती है जो विशिष्ट अनुमतियों को फिर से सक्षम करेगी। यह अनुमति स्क्रिप्ट चलने वाली अंतिम होगी। हमारे अनुभव ने ALTER छंद DROP/CREATE सेमेन्टिक्स के साथ और अधिक समस्याएँ पाईं। वाईएमएमवी