2009-05-07 19 views
6

में स्क्रिप्ट डीबी ऑब्जेक्ट्स के लिए मुफ्त उपयोगिता मैं डेटाबेस स्रोत नियंत्रण को लागू करने की कोशिश कर रहा हूं।एमएस एसक्यूएल

मैं डेटाबेस, अधिमानतः फ़ोल्डरों में व्यवस्थित में प्रत्येक वस्तु के लिए एक अलग फाइल बनाने चाहिए की जरूरत उपकरण,

संग्रहित प्रक्रियाओं कार्यों विचारों टेबल

और यह बहुत अच्छा करने में सक्षम होने की तरह होगा कई विन्यास तालिकाओं में डेटा परिवर्तनों का ट्रैक रखने के लिए कुछ प्रश्नों के परिणामों को भी डंप करें ...

मुझे आश्चर्य है कि पहले से ही ऐसा उपकरण है जो इस तरह की सामग्री को संभाल सकता है ...

-

बस कुछ चीजें स्पष्ट करने के लिए ...

मैं पहले से ही अद्यतन स्क्रिप्ट को संभालने के लिए एसक्यूएल डेल्टा उपयोग कर रहा हूँ ...

मैं की स्क्रिप्ट करना चाहते हैं डीबी सबवर्सन के साथ उपयोग करने के लिए, इसलिए मैं अद्यतन स्क्रिप्ट का अध्ययन किए बिना, प्रत्येक प्रतिबद्धता के साथ बदले गए ऑब्जेक्ट्स का पता लगा सकता हूं ...

मैं SQL वितरित प्रबंधन ऑब्जेक्ट्स (SQL) के साथ एक अच्छी vb स्क्रिप्ट विकसित कर रहा हूं -DMO), मैं बताउंगा कि यह कैसे जाता है ...

मेरा स्वयं का समाधान करने के बारे में क्या अच्छा है, यह है कि मैं कुछ तालिकाओं, सर्वर कॉन्फ़िगरेशन, डेटाबेस की वृद्धि, ठीक से, जो भी मैं डंप कर सकता हूं, में परिवर्तनों का पता लगाने के लिए क्वेरी या आउटपुट प्रक्रिया निष्पादन के आउटपुट भी शामिल कर सकता हूं एक पाठ फ़ाइल ...

उत्तर

0

आप Wizardby का प्रयास कर सकते हैं, जो आप ठीक से पूछ रहे हैं, लेकिन फिर भी आप डेटाबेस परिवर्तन प्रबंधन को संभालने में मदद कर सकते हैं। यह रिवर्स इंजीनियर कर सकते हैं अपने डेटाबेस स्कीमा (अच्छी तरह से, यह का एक सबसेट) और फिर तथाकथित "माइग्रेशन" एक विशेष मंच स्वतंत्र डीएसएल में लिखें:

version 20090331140131: 
    oxite_FileResource: 
     FileResourceID type => PK, primary-key => true 
     SiteID type => Guid, nullable => false 
     FileResourceName type => LongName 
     CreatorUserID references => oxite_User 
     Data type => Binary 
     ContentType type => AnsiString, length => 25, nullable => false 
     Path type => String, length => 1000, nullable => false 
     State type => Byte, nullable => false 
     CreatedDate type => DateTime, nullable => false 
     ModifiedDate type => DateTime, nullable => false 

    oxite_UserFileResourceRelationship: 
     UserID references => oxite_User 
     FileResourceID references => oxite_FileResource: 
      add index unique => true 

     index "" columns => [UserID, FileResourceID], unique => true, clustered => true 
2

अगर मैं तुम्हें सही ढंग से समझ, आप दो चीजों की आवश्यकता : सबसे पहले आपको डेटाबेस मेटाडेटा (टेबल, दृश्य, संग्रहित प्रो, इत्यादि) से स्क्रिप्ट उत्पन्न करने की आवश्यकता होती है, और एक बार ऐसा करने के बाद, आपको स्क्रिप्ट संस्करण के लिए किसी प्रकार की सतत पद्धति का उपयोग करने की आवश्यकता होती है।

आप पहले से ही डेटाबेस में अपने metadat और डेटा है, तो मैं नहीं दिख रहा है क्या डाटाबेस वस्तुओं से स्क्रिप्टको एसक्यूएल प्रबंधन स्टूडियो (या SQL एंटरप्राइज़ प्रबंधक) का उपयोग कर उत्पन्न से रोकेगा: How to: Generate a Script (SQL Server Management Studio) देखते हैं। यह SQL Server 2000, 2005, आदि के लिए काम करना चाहिए। ध्यान रखें कि आप स्क्रिप्ट जनरेशन सेटिंग्स को कस्टमाइज़ कर सकते हैं, उदा। एक विशाल लिपि के बजाय, आप प्रत्येक ऑब्जेक्ट के लिए अलग-अलग स्क्रिप्ट का उपयोग कर सकते हैं। डेटा के साथ तालिकाओं को पॉप्युलेट करने के लिए आपको कुछ स्क्रिप्ट लिखने की आवश्यकता हो सकती है (मुझे यकीन नहीं है कि विज़ार्ड डेटा निष्कर्षण का समर्थन करता है)।

एक बार आपको स्क्रिप्ट मिलने के बाद, आपको शायद उन्हें विशिष्ट फ़ोल्डर के बीच मैन्युअल रूप से वितरित करना होगा और जब यह किया जाता है, तो आपको उन्हें स्रोत नियंत्रण में जांचने के लिए तैयार होना चाहिए। इस बिंदु से आपको बाद के डेटाबेस प्रतिष्ठानों, उन्नयन, और मरम्मत के लिए कार्यप्रणाली को समझने की आवश्यकता है। यह एक जटिल कार्य है, जिसमें कवर करना एक साधारण उत्तर से अधिक समय लेगा। यदि आप संभावित विकल्पों में रूचि रखते हैं, तो मेरी Database installer revised पोस्ट देखें जो डेटाबेस संस्करण (स्वयं-प्रचार के लिए खेद है, लेकिन मैं एक ही जानकारी दोहराना नहीं चाहता) को संबोधित करने वाले कई लेखों का संदर्भ देता है।

1

इस क्षेत्र में अधिकांश उपकरण निःशुल्क नहीं हैं लेकिन एक ओपन सोर्स प्रोजेक्ट, ScriptDB है, जो स्क्रिप्ट उत्पन्न करने के लिए आपकी आवश्यकताओं को पूरा कर सकता है।

यह सही क्रम में डेटाबेस में स्क्रिप्ट को लागू करने की समस्या का समाधान नहीं करेगा - यदि आप भुगतान नहीं करना चाहते हैं, तो आपको अपना स्वयं का सुधार करना पड़ सकता है।

+0

नहीं है में एक फ़ोल्डर से सभी फाइलों में जाँच करने के लिए है अभी तक जारी नहीं किया गया एक बैच फ़ाइल scriptdb का अगला संस्करण जो स्रोत फ़ाइलों से आपके लिए डेटाबेस को पुन: बनाने में सक्षम होना चाहिए। आप इसे संस्करण नियंत्रण से पकड़ सकते हैं। मैंने कोशिश नहीं की है, लेकिन यह * दिखता है * जैसे यह सही काम करता है। – lambacck

4

मैं इस उद्देश्य के लिए ScriptDB का उपयोग करता हूं। जेनरेट की गई फाइलों में स्क्रिप्टिंग की तारीख को हटाने के लिए मुझे केवल एक चीज बदलनी पड़ी। अन्यथा फ़ाइलों को हमेशा सबवर्सन में परिवर्तित के रूप में चिह्नित किया जाता है।

यहां बैच का उपयोग किया गया है। svnclient codeplex svncompletesync.codeplex.com से उपकरण, तोड़फोड़ .:

svn checkout "http://svn/myproject" D:\Projekte\db_svn\myproject

ScriptDB "D:\temp\scriptdb" myserver mydb mylogin mypwd

del "D:\Projekte\db_svn\myproject\Schema Objects\\*.sql" /q /s

xcopy "D:\temp\scriptdb\myserver\mydb\Schema Objects\\*.sql" "D:\Projekte\db_svn\myproject\Schema Objects" /e /y /i

svnclient "D:\Projekte\db_svn\myproject" -m "commit durch svncompletesync"

+0

जब मैं स्क्रिप्ट डीबी चलाता हूं, बनाई गई फ़ाइलों में स्क्रिप्टिंग की तारीख नहीं होती है। लेकिन मुझे एक और बड़ी समस्या है (मैं सबवर्सन के साथ स्क्रिप्ट डीबी का उपयोग करने की कोशिश कर रहा हूं): जब मैं अपने डेटाबेस में किसी ऑब्जेक्ट को हटाता हूं और फिर स्क्रिप्ट डीबी चलाता हूं, तो यह इस ऑब्जेक्ट के लिए पहले से जेनरेट की गई स्क्रिप्ट फ़ाइल को हटा नहीं देता है। आपने इसे कैसे हल किया? मैंने स्क्रिप्ट डीबी को फिर से चलाने से पहले बनाई गई फ़ाइलों को हटाने की कोशिश की, लेकिन फिर अगली प्रतिबद्धता विफल हो गई क्योंकि .svn फ़ोल्डर्स भी चले गए हैं ... –

+0

* कीबोर्ड के खिलाफ माथे तोड़ दिया * कभी-कभी आपको स्पष्ट दिखाई नहीं देता: del c: \ फ़ोल्डर \ *। एसक्यूएल केवल एसक्यूएल फाइलों को हटा देता है और एसएसएनएन फ़ोल्डरों को बरकरार रखता है। यही वही है जो मैं ढूंढ रहा था (और नहीं देखा)। धन्यवाद! –

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