2015-12-01 7 views
7

मेरे पास एक विजुअल स्टूडियो डेटाबेस प्रोजेक्ट (डीएसीपीएसी) है जिसमें कई SQL अनुक्रम शामिल हैं। हालांकि जब मैं DACPAC को तैनात करता हूं तो यह हमेशा अनुक्रम मान को डिफ़ॉल्ट स्क्रिप्ट में शामिल करता है जिसमें स्क्रिप्ट बनाएं (इस मामले में 1)। जैसेडीएसीपीएसी और एसक्यूएल अनुक्रम

CREATE SEQUENCE [dbo].[MySequence] 
AS INT 
START WITH 1 
INCREMENT BY 1; 

किसी को भी या तो DACPAC को निर्देश अनुक्रम शुरू मूल्य, या एक पोस्ट तैनाती कदम शायद के रूप में सही मान बहाल करने के लिए DACPAC होने का किसी तरह की अनदेखी करने का एक तरीका सुझाव है कि कर सकते हैं?

अग्रिम

उत्तर

6

यह धन्यवाद दृश्यों के साथ एक ज्ञात समस्या है जब SSDT उपकरण का उपयोग कर रहा है। कुछ समाधान हैं।

  1. प्रकाशित करते समय अनुक्रम वस्तुओं को अनदेखा करें।
  2. प्रारंभिक मूल्य को अनदेखा करने के लिए कस्टम परिनियोजन फ़िल्टर का उपयोग करें।
  3. लाइव पर तैनाती के बाद काउंटर बढ़ाने के लिए RESTART WITH के बजाय sp_sequence_get_range का उपयोग करें।

1. अनुक्रम पर ध्यान न दें वस्तुओं जब

प्रकाशित करने यह सबसे आसान विकल्प लेकिन सबसे अजीब के रूप में यह मतलब है कि आप मैन्युअल रूप से दृश्यों को तैनात करने की है। अपने प्रकाशित प्रोफ़ाइल

<ExcludeSequences>True</ExcludeSequences> 

पर निम्नलिखित को जोड़ या, कमांड लाइन

/p:ExcludeObjectType=Sequences 

2. उपयोग एक कस्टम तैनाती फिल्टर

पहले डाउनलोड AgileSqlClub's तैनाती फिल्टर से।

/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor 
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreName(Order_No_Seq)" 

3. उपयोग sp_sequence_get_range

बजाय पर RESTART WITH का उपयोग कर के इस के लिए: कमांड लाइन से,

<AdditionalDeploymentContributors>AgileSqlClub.DeploymentFilterContributor</AdditionalDeploymentContributors> 
<AdditionalDeploymentContributorArguments>SqlPackageFilter=IgnoreName(Order_No_Seq)</AdditionalDeploymentContributorArguments> 

या: फिर अपने तैनाती प्रोफ़ाइल के लिए निम्न जोड़ने प्रारंभिक मूल्य को बदलने के लिए उत्पादन सर्वर, उपयोग करें:

DECLARE @range_first_value SQL_VARIANT; 
EXEC sp_sequence_get_range 
    @sequence_name = 'MySequence', 
    @range_size = 1000, 
    @range_first_value = @range_first_value OUTPUT; 

इस तरह प्रारंभ मूल्य हमेशा तैनाती स्क्रिप्ट से अपेक्षित मूल्य से मेल खाता है।


संसाधन

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