19

में अपने SQL सर्वर डेटाबेस प्रोजेक्ट में स्थिर डेटा कैसे संग्रहीत करते हैं मैं अपनी सभी तालिका, संग्रहीत प्रक्रिया, विचार आदि स्क्रिप्ट को रखने के लिए SQL सर्वर डेटाबेस प्रोजेक्ट का उपयोग करने का प्रयास कर रहा हूं। अब मैं अपने सभी संदर्भ (या स्थैतिक) डेटा को रखने में सक्षम होने का एक तरीका बन गया हूं। जब उपकरण या प्रोजेक्ट चलाया जाता है तो यह सभी डीबी ऑब्जेक्ट्स इंस्टॉल करेगा और सभी संदर्भ डेटा डालेंगे।आप वीएस 2012

मुझे बनाम 2010 के लिए समान लेख मिले लेकिन वे डेटाबेस पेशेवरों के लिए टीम संस्करण जैसी चीजों का उपयोग कर रहे थे।

  • स्रोत नियंत्रण के तहत हमारे डीबी प्राप्त करें।
  • हमारे स्थानीय विकास डीबी को स्रोत नियंत्रण में नवीनतम संस्करण के साथ सिंक्रनाइज़ करें।
  • विजुअल स्टूडियो 2012 और SQL सर्वर 2012
  • उपयोग नेट उपकरण के रूप में जहाँ तक संभव नहीं है और Redgate की तरह कुछ के साथ काम करें (Redgate महान है, लेकिन मैं तो बस अभी तक अगर मैं उपकरणों का उपयोग कर सकते हैं इसके लिए बाहर के लिए नहीं करना चाहता वी.एस. 2012) में
+0

एंटीटी फ्रेमवर्क कोड का उपयोग क्यों नहीं करें? आप इसका उपयोग पीओसीओ कक्षाओं + डेटा एन्नोटेशन या फ्लुएंट एपीआई का उपयोग कर अपने सभी डेटाबेस टेबल/रिश्तों को मॉडल करने के लिए कर सकते हैं। फिर ईएफ माइग्रेशन आपके डीबी संस्करण नियंत्रण और/या आपके संदर्भ डेटा को भी संभाल सकता है। – Kittoes0124

उत्तर

22

आप इस दृष्टिकोण का उपयोग कर सकते हैं:

  • , एक्सएमएल फाइल में आपके संदर्भ डेटा रखो तालिका के अनुसार एक
  • अपने डेटाबेस परियोजना के संदर्भ में डेटा के साथ एक्सएमएल फाइल जोड़े
  • एक्सएमएल से डेटा निकालना
  • उपयोग एक के बाद तैनाती स्क्रिप्ट अपनी तालिकाओं

में विलय यहां प्रत्येक चरण की एक अधिक विस्तृत विवरण, एक उदाहरण के साथ सचित्र है। मान लीजिए कि आप देशों ने इस संरचना है कि की एक तालिका प्रारंभ करने की आवश्यकता है:

create table Country (
    CountryId uniqueidentifier NOT NULL, 
    CountryCode varchar(2) NOT NULL, 
    CountryName varchar(254) NOT NULL 
) 

अपने डेटाबेस परियोजना के तहत ReferenceData नामक एक नया फ़ोल्डर बनाएँ। यह Schema Objects और Scripts का एक भाई फ़ोल्डर होना चाहिए।

Country.xml नामक एक नई एक्सएमएल फ़ाइल ReferenceData फ़ोल्डर में जोड़ें। इस प्रकार फ़ाइल भरें:

<countries> 
    <country CountryCode="CA" CountryName="Canada"/> 
    <country CountryCode="MX" CountryName="Mexico"/> 
    <country CountryCode="US" CountryName="United States of America"/> 
</countries> 

Script.PostDeployment.sql का पता लगाएं, और यह करने के लिए निम्न कोड जोड़ें:

DECLARE @h_Country int 

DECLARE @xmlCountry xml = N' 
:r ..\..\ReferenceData\Country.xml 
' 

EXEC sp_xml_preparedocument @h_Country OUTPUT, @xmlCountry 

MERGE Country AS target USING (
    SELECT c.CountryCode, c.CountryName 
    FROM OPENXML(@h_Country, '/countries/country', 1) 
    WITH (CountryCode varchar(2), CountryName varchar(254)) as c) AS source (CountryCode, CountryName) 
ON (source.CountryCode = target.CountryCode) 
WHEN MATCHED THEN 
    UPDATE SET CountryName = source.CountryName 
WHEN NOT MATCHED BY TARGET THEN 
    INSERT (CountryId, CountryCode, CountryName) values (newid(), source.CountryCode, source.CountryName) 
; 

मैं केवल वी.एस. 2008 में इस समाधान की कोशिश की है, लेकिन यह अपने विकास के वातावरण के लिए नास्तिक होना चाहिए।

+0

चूंकि आप एकमात्र व्यक्ति हैं जो स्वयंसेवी राय करने के लिए हैं, आपको कुछ प्रतिष्ठा हो सकती है। :) – uriDium

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