2012-01-23 15 views
7

ठीक है .. इसलिए मैं विजुअल स्रोत पर होने के बाद गिट/गिथब के लिए नया हूं, मेरे करियर में से अधिकांश सुरक्षित हूं और प्रकाश को देखा है - इसे प्यार करें। तो मैंने अपने सभी .NET प्रोजेक्ट्स को अपने गितब खाते में माइग्रेट कर दिया है और गिट के साथ अपने सभी SQL सर्वर डेटाबेस को भी प्रबंधित करना चाहता हूं। मेरी सभी परियोजनाओं में मैंने हमेशा अपनी डेटाबेस फ़ाइलों को एक/डेटाबेस उपनिर्देशिका में रखा है, इसलिए मेरे स्रोत पेड़ में उदाहरण के लिए, /Databases/MyDatabase.mdf और /Databases/MyDatabase.ldf है। मैं इन फ़ाइलों को गिट के साथ ट्रैक कर रहा हूं और वे मेरे बाकी स्रोत के साथ अच्छी तरह से गितब में दिखाते हैं।गिट और एसक्यूएल सर्वर एमडीएफ फ़ाइलें

यहाँ मैं क्या होने की उम्मीद कर रही है: मैं एक नेट रोकें MSSQLSERVER साथ एसक्यूएल सर्वर बंद करो और मैं एक शाखा चेकआउट तो Git कि शाखा के लिए MDF और एलडीएफ फ़ाइलों नीचे खींच लेंगे। नेट स्टार्ट MSSQLSERVER के साथ SQL सर्वर को पुनरारंभ करें और उस विशेष शाखा के लिए स्रोत और डेटाबेस पर जो भी काम करना है, उसे करें। गिट एमडीएफ फ़ाइल में मेरे परिवर्तनों को ट्रैक करेगा और जब मैं एक मंच/प्रतिबद्ध/पुश करता हूं तो यह रिमोट रिपोजिटरी में बदलावों को वापस भेज देगा।

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

+0

ऑफ-विषय; डीबीए एसई में जाने के लिए मतदान। – Yuck

उत्तर

8

डेटाबेस फ़ाइलों को किसी भी स्रोत नियंत्रण में बदलने के लिए बहुत बुरा विचार है। उचित स्क्रिप्ट बनाने/अपडेट करने का प्रयास करें और उन्हें स्रोत नियंत्रण में संग्रहीत करें - डीबी

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

या आप DB स्कीमा अंदर बदलावों और डेटा, Redgate स्कीमा की तरह ट्रैक करने के लिए कुछ व्यावसायिक/मुफ्त सॉफ्टवेयर का उपयोग कर सकते तुलना करें या Redgate डाटा की तुलना करें

+0

यदि आप समझते हैं कि यह इतना बुरा विचार क्यों है, तो मैं आपका उत्तर/अपवॉट स्वीकार करूंगा ... मैं बस इतना करना चाहता हूं कि विकास के दौरान आवश्यक होने पर फ़ाइलों के संस्करणों को रोलबैक परिवर्तनों में रखें। मैं एक शाखा एमडीएफ फ़ाइल को किसी मास्टर या किसी भी चीज़ में विलय करने की उम्मीद नहीं कर रहा हूं - मुझे बस फाइलों पर संस्करण नियंत्रण चाहिए - एक .mdf/.ldf और कुछ कहें, फ़ोटोशॉप फ़ाइल के बीच क्या अंतर है? प्रारंभिक विकास के दौरान मैं जो भी परिवर्तन करता हूं, वह एक दर्द है। मैं रेडगेट एसक्यूएल तुलना और डेटा तुलना का उपयोग करता हूं और वे पर्यावरण को बदलने के लिए महान उपकरण हैं (ई।जी। प्रोड के लिए क्यूए से देव)। –

+2

@ सीके 1 स्कीमा में थोड़ा बदलाव, एसक्यूएल सर्वर द्वारा डीबी के प्रत्येक ** उद्घाटन ** सर्वर पर पूरी फ़ाइल/लॉग पुनः लोड करने का कारण बनता है, क्योंकि न्यूनतम डीबी आकार 4 एमबी है - इसका मतलब है कि एक बड़ा कचरा ओवरहेड है। स्क्रिप्टिंग केवल उन्हें बदलने और स्रोत नियंत्रण में सहेजने से आपको डीबी परिवर्तनों का साफ और पठनीय इतिहास देता है –

+0

@ सीके 1 क्या आप कोई जवाब स्वीकार करने पर विचार करते हैं? –

1

क्या आपने विकास परिवर्तनों का ट्रैक रखने के लिए हमारे SQL स्रोत नियंत्रण उपकरण का उपयोग करने पर विचार किया है। दृश्यों के पीछे यह आपके लिए 'स्क्रिप्टिंग आउट' करता है। यह वास्तव में हुड के तहत एसक्यूएल तुलना इंजन का उपयोग करता है।

http://www.red-gate.com/products/sql-development/sql-source-control/

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

http://www.simple-talk.com/sql/database-administration/auditing-ddl-changes-in-sql-server-databases/

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