2008-09-03 12 views
5

मैं वीएस -2008 में निर्मित एक वेब एप्लिकेशन पर विकास में शुरुआती हूं। मेरे पास एक डेस्कटॉप पीसी है (जहां अधिकांश काम किया जाता है) और एक लैपटॉप (कभी-कभी पोर्टेबिलिटी के लिए) जिस पर मैं प्रोजेक्ट कोड सिंक करने के लिए अंखएसवीएन का उपयोग करता हूं। मेरे विकास डेटाबेस (एसक्यूएल सर्वर एक्सप्रेस) को भी समन्वयित रखने का सबसे अच्छा तरीका क्या है?सिंक में कई वातावरण में विकास डेटाबेस रखना

मेरे पास एसवीएन में एक वीएस डेटाबेस प्रोजेक्ट है जिसमें स्क्रिप्ट बनाते हैं जो स्कीमा बदलते समय पुन: उत्पन्न करते हैं। जब भी कुछ बदल गया तो मूल विचार डीबी को फिर से बनाना था, लेकिन यह जल्दी से दर्द हो रहा है। साथ ही, मैं यह सुनिश्चित करने के लिए दर्ज की गई सभी नमूना पंक्तियां खो दूंगा कि डेटा ठीक से प्रदर्शित किया जा रहा है।

मैं स्रोत नियंत्रण के तहत .MDF और .LDF फ़ाइलों को डालने पर विचार कर रहा हूं, लेकिन मुझे संदेह है कि यदि मैं एक एसवीएन अपडेट करता हूं और फ़ाइलों को इसके तहत से बाहर निकलता है, तो नई प्रतियों के साथ प्रतिस्थापित हो जाता है, तो SQL सर्वर एक्सप्रेस इसे सुंदर तरीके से संभाल लेगा। । स्रोत नियंत्रण में कुछ बड़ी बाइनरी फ़ाइलों को चिपकाकर एक सुरुचिपूर्ण समाधान की तरह प्रतीत नहीं होता है, भले ही यह केवल एक फेंकने वाला विकास डेटाबेस हो। कोई सुझाव?

उत्तर

3

आपके डेटाबेस के अतिरिक्त स्क्रिप्ट बनाएं, आप डिफ़ॉल्ट डेटा या नमूना डेटा स्क्रिप्ट को क्यों नहीं बनाए रखते?

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

Best tool for auto-generating SQL change scripts

:

आपके सामने एक प्रश्न मैं कुछ समय पहले पोस्ट पर एक नज़र लेने के लिए चाहते हो सकता है

3

आप एमडीएफ & .LDF फ़ाइलों के बजाय डेटाबेस के बैकअप (.bak फ़ाइल) को स्टोर कर सकते हैं।

use master 
go 

if exists (select * from master.dbo.sysdatabases where name = 'your_db') 
begin 
    alter database your_db set SINGLE_USER with rollback IMMEDIATE 
    drop database your_db 
end 

restore database your_db 
from disk = 'path\to\your\bak\file' 
with move 'Name of dat file' to 'path\to\mdf\file', 
    move 'Name of log file' to 'path\to\ldf\file' 
go 

आप उपरोक्त पाठ फ़ाइल restore.sql में स्क्रिप्ट का उल्लेख किया और निम्न आदेश का उपयोग कर बैच फ़ाइल से इसे कहते रख सकते हैं:

osql -E -i restore.sql 

इस तरह
आप अपने डाटाबेस आसानी से निम्नलिखित स्क्रिप्ट का उपयोग कर बहाल कर सकते हैं आप पूरी प्रक्रिया को स्वचालित करने स्क्रिप्ट फ़ाइल बना सकते हैं:

  • SVN भंडार या किसी उपयुक्त स्टोरा से नवीनतम डाटाबेस बैकअप जाओ जीई
  • बक फ़ाइल
7

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

हालांकि, उन सभी के साथ, यदि आप टी नहीं सोचते

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

1

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

इनमें से अधिकतर दृष्टिकोण विशेष रूप से उत्तरार्द्ध, अधिकांश परीक्षण डेटा के शीर्ष पर उपयोग करने के लिए सुरक्षित हैं। मुझे विशेष रूप से स्वचालित अंतिम 2 पसंद है क्योंकि मैं एक बदलाव कर सकता हूं, और अगली बार जब कोई नवीनतम हो जाता है, तो वे केवल "अपडेटर" चलाते हैं और उन्हें नवीनतम के लिए उपयोग किया जाता है।

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