SSDT परिनियोजन से एक विशिष्ट तालिका को छोड़कर


11

मेरे पास स्कीमा में सब कुछ के साथ एक मौजूदा डेटाबेस है dbo। मेरे पास एक SSDT प्रोजेक्ट है जिसमें मैं इसे स्कीमा के साथ जोड़ रहा हूंfoo

मेरे पास एक तालिका है जो परियोजना में इस तरह दिखती है:

CREATE table foo.a (
    id INT NOT NULL
        CONSTRAINT [PK_foo_a] PRIMARY KEY CLUSTERED
        CONSTRAINT [FK_foo_a] FOREIGN KEY REFERENCES [dbo].[a],
    desc NVARCHAR(50) NOT NULL
)

यह dbo.a पर निर्भर करता है dbo.a में कई स्तंभ हैं जो अन्य स्तंभों के लिए विदेशी कुंजियाँ हैं। कोई और (जो डिफ़ॉल्ट स्कीमा बनाए रखता है) dbo.a बदल सकता है।

मैं साधारण दुकान dbo.a को पसंद करना चाहता हूं:

CREATE table dbo.a (
    id INT NOT NULL
        CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)

इसलिए यह आंतरिक रूप से निर्मित होता है, लेकिन इसे तैनात नहीं किया जाता है। क्या यह संभव है?


क्या आप अपने deploys के लिए स्कीमा तुलना का उपयोग नहीं करते हैं? जब परिवर्तन का पता चले तो आप सूची से उस तालिका को अनचेक कर सकते हैं।
डेव

मैं मोमेंटम पर एक स्कीमा तुलना कर रहा हूं, लेकिन मेरे लैपटॉप से ​​देव सर्वर तक मैं एक वास्तविक प्रकाशित तैनाती नहीं करना चाहता।
जस्टिन डियरिंग

जवाबों:


11

आप AgileSqlClub SqlPackage परिनियोजन फ़िल्टर का उपयोग कर सकते हैं ।

एड एलियट द्वारा मूल लेख से पुन: प्रस्तुत संक्षिप्त निर्देश :

  1. Agilesqlclub.codeplex.com से फ़िल्टर डाउनलोड करें
  2. के DLLरूप में एक ही फ़ोल्डर में डाल दियाsqlpackage.exe
  3. इन कमांड लाइन मापदंडों को अपनी तैनाती में जोड़ें:

    /p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor /p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"

    यह BLAHस्कीमा में कुछ भी न तो तैनात करेगा, न ही गिराएगा।

देखें मूल लेख पूर्ण विवरण के लिए।


जब मैं foo.publish.xml फ़ाइलों के माध्यम से devenv.exe से तैनात करता हूं, तो यह sqlpackage.exe को स्पॉन नहीं करता है। वहाँ एक रास्ता है कि मैं यह कर सकता हूँ?
जस्टिन डियरिंग

क्या मैं कभी भी बदलावों को लागू करने के लिए devenv का उपयोग नहीं करता हूं, इसके बजाय प्रोजेक्ट का निर्माण करें और sqlpackage.exe ड्राइव करने के लिए एक स्क्रिप्ट का उपयोग करें - इस तरह से आप सामान परिनियोजन योगदानकर्ताओं की तरह आसानी से सामान कर सकते हैं और उसी स्क्रिप्ट का परीक्षण कर सकते हैं जिसका उपयोग आप अपने अन्य वातावरणों में कर सकते हैं आपकी ci प्रक्रिया में!
एड इलियट

यह मेरे लिए एक बड़ी मदद थी, मुझे केवल एक विशेष स्कीमा को तैनात करने की आवश्यकता थी,। भविष्य में दूसरों के लिए ध्यान दें, इग्नोरसेमे विधि को regex में ले सकते हैं IgnoreSchema (^ (?! \ _ (I) BLAH \ b)। *) सब कुछ अनदेखा करने के लिए, लेकिन
BLAH

3

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

एक विधि समझ में आती है, मेरे पास अभी उन्हें परखने की क्षमता नहीं है और मैंने केवल एक "समान" पद्धति का उपयोग किया है, बिल्कुल भी नहीं।

विकल्प 1:

  1. इसमें एक नया डेटाबेस प्रोजेक्ट बनाएं dbo.a

  2. 3-भाग के नामकरण के साथ तालिका देखें। नाम के पहले भाग के लिए, SQLCMD चर का उपयोग करें। उदाहरण के लिए[$(DatabaseName)].dbo.a.

  3. अपने fooडेटाबेस को कभी परिनियोजित न करें।

  4. प्रकाशित फ़ाइलों या cli इंटरफ़ेस के माध्यम से, $(DatabaseName)अपने असली डेटाबेस के समान नाम बनाएँ ।


इस कोशिश में जा रहे हैं
जस्टिन डियरिंग

@JustinDearing परिनियोजन फ़िल्टर विधि का उपयोग करें, यह आपके उपयोग के मामले में बिल्कुल फिट बैठता है (यानी स्रोत नियंत्रण में सभी तालिकाओं को रखें और केवल परिनियोजन पर कुछ अनदेखा करें)
Ed Elliott

0

एक "क्लीन" बिल्ट-इन करने का तरीका (2016 के अनुसार) एक सेव्ड स्कीमा तुलना फ़ाइल का उपयोग कर रहा है। आप ऐसा कर सकते हैं:

  1. अपनी स्कीमा तुलना (अपने डेटाबेस प्रोजेक्ट से -> एक लक्ष्य सर्वर) करें और उन सभी वस्तुओं को अनचेक करें जिन्हें आप अपडेट करने के लिए बाहर करना चाहते हैं।
  2. अपने स्कीमा को सहेजें * .scmp फ़ाइल से तुलना करें
  3. आप जरूरत पड़ने पर विभिन्न परिवेशों के लिए संस्करण बनाने के लिए .scmp फ़ाइल को कॉपी और पेस्ट कर सकते हैं और स्रोत बदलने के लिए XML एडिटर में एडिट कर सकते हैं (आउटपुट dacpac फ़ाइल बनाने के लिए इंगित करने के लिए), कनेक्शन, आदि या मैन्युअल रूप से अनुभाग में आइटम जोड़ / संशोधित कर सकते हैं। ।
  4. प्रकाशन के लिए उपयुक्त .scmp फ़ाइल का उपयोग करने के लिए अपने dacpac परिनियोजन / प्रकाशन आदेश पैरामीटर कॉन्फ़िगर करें। उदा। SqlPackage.exe / Action: publish /SourceFile:c:\project\schema_comb.pmp

अधिक जानकारी यहाँ: https://devblogs.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-data-tier-application-framework-dacfx/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.