2012-12-14 35 views
12

का उपयोग कैसे करें मैं एसएसडीटी (SQL सर्वर डेटा टूल्स) के साथ SQL Server 2012 और VS 2010 चला रहा हूं। मेरा देव डीबी संग्रहीत प्रोसेस, फ़ंक्शंस, सीएलआर ऑब्जेक्ट्स इत्यादि का उपयोग करता है। इसमें लगभग 500 जीबी के प्रोड डेटा का एक स्नैपशॉट है।SQL सर्वर डेटाबेस प्रोजेक्ट

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

लेकिन, मैं उलझन में हूं कि SQL सर्वर डेटाबेस प्रोजेक्ट के तहत proc/table को बदलने/जोड़ने के लिए मेरी विकास प्रक्रिया क्या होनी चाहिए। ऐसा प्रतीत होता है कि मेरे द्वारा किए गए कोई भी परिवर्तन कुछ स्थानीय डीबी/प्रोजेक्ट डेटाबेस पर लागू होते हैं और मेरे dev डेटाबेस पर नहीं।

क्या मुझे लगता है कि मेरी सभी ऑब्जेक्ट्स को उस स्थानीय डीबी में लिखने के लिए, फिर प्रकाशित करें और प्रकाशित करें के माध्यम से मेरे dev डेटाबेस पर तैनात करें? मैं देव डीबी में अपनी मौजूदा टेबल के बारे में चिंतित हूं क्योंकि अगर प्रकाशन प्रक्रिया गिर जाती है और तालिकाओं को दोबारा शुरू करती है, तो मैं अपना प्रोड डेटा स्नैपशॉट खो दूंगा।

SQL सर्वर डेटाबेस प्रोजेक्ट में अनुसरण करने के लिए सही विकास प्रक्रिया क्या है?

+2

आप जो डीबी कि DBPROJ को तैनात कॉन्फ़िगर कर सकते हैं सेवा मेरे। यह आपको चेतावनी देगा कि क्या यह 'ब्रेकिंग' परिवर्तन नहीं कर सकता है, यानी एक जिसे एक टेबल छोड़ने और डेटा की हानि की आवश्यकता होगी। आपके पास डीडीएल को सीधे बदलने की बजाए एक बदलाव स्क्रिप्ट उत्पन्न करने का विकल्प भी है - इससे आपको परिवर्तन देखने का विकल्प मिल जाता है। – StuartLC

+0

संग्रहित प्रक्रियाओं/विचार/funcitons विकसित करने के लिए कोई भी एसएसडीटी का उपयोग नहीं कर रहा है? क्योंकि मुझे विश्वास करना है कि पुनः प्रकाशित करने और "इसे आजमाएं" से बेहतर जवाब है। हो सकता है कि यूनिट टेस्ट क्या माइक्रोसॉफ्ट ने हमें उपयोग करने का इरादा किया? अन्य उपयोगकर्ता क्या कर रहे हैं? –

उत्तर

4
  1. वीएस डीबी परियोजना के अंदर परिवर्तन करें। localDB को

  2. तैनात परिवर्तनों का परीक्षण करने

  3. अपने उत्पादन सर्वर पर डेटाबेस को प्रकाशित करें। मैं इसे मैन्युअल रूप से करने के लिए स्कीमा तुलना का उपयोग करना पसंद करता हूं, लेकिन आप प्रोजेक्ट को दायाँ क्लिक -> प्रकाशित मेनू (जो एक प्रकाशन प्रोफ़ाइल भी बनायेगा), या कमांड लाइन तर्कों का उपयोग करके प्रकाशित कर सकते हैं। प्रकाशित प्रक्रिया ड्रॉप नहीं होगी और टेबल तैयार नहीं करेगी (जब तक कि आप इसे & ड्रॉप करने के लिए नहीं कहें पूरे डीबी को फिर से बनाएं)।

वैकल्पिक रूप से, परियोजना सेटिंग्स में आप (के रूप में टिप्पणी में बताया) अपने उत्पादन सर्वर को इंगित करने के लिए कनेक्शन स्ट्रिंग बदल सकते हैं। हालांकि, मैं इसके खिलाफ अनुशंसा करता हूं, क्योंकि जब भी आप स्थानीय निर्माण (F5) चलाते हैं तो यह उत्पादन सर्वर पर प्रकाशित करने का प्रयास करेगा।

5

तैनाती के बाद "होने के लिए" स्रोत के रूप में स्रोत डेटाबेस (आपके मामले में, आपके डेटाबेस प्रोजेक्ट) के बारे में सोचें। जब एक परिनियोजन शुरू किया जाता है, निष्पादन योग्य (SqlPackage.exe) लक्ष्य के साथ स्रोत की तुलना करता है और लक्ष्य को स्रोत की तरह दिखने के लिए एक अंतर/डेल्टा स्क्रिप्ट उत्पन्न करता है। यही कारण है कि हमें अब CREATE या ALTER निर्दिष्ट करना होगा; उपकरण इसे आंकड़े बताता है। चल रहे विकास के बारे में अपने प्रश्न का उत्तर देने के लिए, आप किसी भी तरह से विकसित कर सकते हैं। आप प्रोजेक्ट फाइलों में विकसित हो सकते हैं और उन्हें एक सामान्य देव डेटाबेस (यदि आप एक टीम पर हैं) पर प्रकाशित कर सकते हैं, या आप SQL सर्वर प्रबंधन स्टूडियो (एसएसएमएस) जैसे टूल के साथ डेटाबेस में विकसित कर सकते हैं और प्रोजेक्ट फ़ाइलों के साथ सिंक्रनाइज़ कर सकते हैं एक स्कीमा तुलना के साथ (मैं बाद की तकनीक का उपयोग करता हूं क्योंकि मुझे एसएसएमएस पसंद है)।

तैनाती के लिए, आपको उस मशीन पर एसएसडीटी स्थापित करना होगा जिसमें से आप तैनाती निष्पादित करते हैं (SQL सर्वर 2012 के साथ एसएसडीटी जहाजों और बाद में; मुझे SQL सर्वर 2008 के बारे में पता नहीं है)। आप तैनाती को सरल बनाने के लिए स्क्रिप्ट बना सकते हैं। आप अनिवार्य रूप से SqlPackage.exe को कॉल करेंगे (यह x: \ Program Files (x86) \ Microsoft SQL Server \ nnn \ DAC \ bin) में एक क्रिया और स्रोत के साथ रहता है। मैं अधिकांश कमांड गुणों का ख्याल रखने के लिए प्रकाशन प्रोफाइल का भी उपयोग करता हूं।तो एक उदाहरण तैनाती इस प्रकार दिखाई देंगे:

SqlPackage.exe /Action:Publish /SourceFile:MyDatabase.dacpac /Profile:MyProfile.publish.xml 

अधिक जानकारी के लिए: एसक्यूएल सर्वर डेटा टूल प्रलेखन http://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspx

SqlPackage.exe प्रलेखन http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx

+0

मुझे लगता है कि मैं जो हिस्सा खो रहा हूं वह है "एसएसएमएस जैसे टूल के साथ डेटाबेस में विकसित करें" - यह डीबी प्रोजेक्ट का उपयोग करते समय कैसा दिखता है? मैं अपनी स्क्रिप्ट फाइलों को शीर्ष पर 'IF EXISTS ... DROP ...' के साथ उपयोग करने के लिए उपयोग किया जाता हूं और 'जाओ ... EXEC SprocName @ params' ... नीचे। तो मैं स्पोक संपादित कर सकता हूं, F5 दबा सकता हूं, और नए परिणाम देख सकता हूं। लेकिन अगर मैं उस फ़ाइल को डीबी प्रोजेक्ट में सहेजता हूं, तो यह शिकायत करेगा क्योंकि यह केवल CREATE कथन चाहता है। जब भी मैं sproc में थोड़ा बदलाव करता हूं, मैं मैन्युअल रूप से इसे सेट अप नहीं करना चाहता हूं। एक स्पोक/दृश्य में परिवर्तन करने/परीक्षण करने की प्रक्रिया आपके लिए कैसी दिखती है? –

+0

एसएसडीटी के बारे में जानने के लिए पहली चीजों में से एक, किसी भी उपकरण के साथ, यह दुनिया का विचार है। जैसा कि मैंने अपनी पोस्ट में कहा था, एसएसडीटी/SourceFile पैरामीटर को राज्य के रूप में देखता है कि लक्ष्य डेटाबेस तैनाती के अंत में होना चाहिए। और वहां पहुंचने के लिए, यह ऐसा करने के लिए, स्रोत को लक्ष्य की तुलना करने के आधार पर डेल्टा स्क्रिप्ट उत्पन्न करता है। यदि आपकी संग्रहीत प्रक्रिया अभी तक लक्ष्य में मौजूद नहीं है, तो यह इसे बनाने के लिए एक CREATE प्रक्रिया कथन उत्पन्न करती है; अन्यथा, यह इसे अद्यतन करने के लिए एक वैकल्पिक प्रक्रिया कथन उत्पन्न करता है। –

+0

"एसएसएमएस जैसे टूल के साथ डेटाबेस में विकसित करें" का मतलब है कि मैंने आपकी संग्रहीत प्रक्रियाओं को लिखने के लिए एसएसएमएस का उपयोग करना है जैसा कि हमने परंपरागत रूप से किया है। चूंकि आप सीधे डेटाबेस ऑब्जेक्ट्स के साथ काम कर रहे हैं, इसलिए आपको तदनुसार CREATE/ALTER का उपयोग करना होगा। जब आप पूरा कर लें, डेटाबेस प्रोजेक्ट पर वापस जाएं और डेटाबेस प्रोजेक्ट में कोड के साथ नई या अपडेट की गई संग्रहीत प्रक्रिया को सिंक्रनाइज़ करने के लिए स्कीमा तुलना का उपयोग करें। –