Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQLCMD का उपयोग करके PostDeployment.sql स्क्रिप्ट में सशर्त तर्क

अपडेट करें

मुझे अब पता चला है कि उपरोक्त if/else सिंटैक्स मेरे लिए काम नहीं करता है क्योंकि मेरी कुछ लिंक की गई स्क्रिप्ट के लिए GO स्टेटमेंट की आवश्यकता होती है। अनिवार्य रूप से :r केवल स्क्रिप्ट को इनलाइन आयात करता है, इसलिए यह अमान्य साइटैक्स बन जाता है।

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

किसी को भी एक ही चीज़ की आवश्यकता है - मुझे यह पोस्ट उपयोगी लगी

तो मेरे प्रोजेक्ट में मेरे पास निम्नलिखित पोस्ट परिनियोजन फ़ाइलें हैं:

  • Script.PostDeployment.sql (खाली फ़ाइल जिसे बदल दिया जाएगा)
  • Default.Script.PostDeployment.sql (मानक डेटा कॉन्फ़िगरेशन के लिए आवश्यक स्क्रिप्ट के लिंक)
  • Configuration1.Script.PostDeployment.sql (किसी विशिष्ट डेटा कॉन्फ़िगरेशन के लिए आवश्यक स्क्रिप्ट के लिंक)

मैंने फिर प्रोजेक्ट फ़ाइल के अंत में निम्नलिखित जोड़ा (अनलोड करने के लिए राइट क्लिक करें और फिर राइट क्लिक करें संपादित करें):

  <Target Name="BeforeBuild">
      <Message Text="Copy files task running for configuration: $(Configuration)" Importance="high" />
      <Copy Condition=" '$(Configuration)' == 'Release' " SourceFiles="Scripts\Post-Deployment\Default.Script.PostDeployment.sql" DestinationFiles="Scripts\Post-Deployment\Script.PostDeployment.sql" OverwriteReadOnlyFiles="true" />
      <Copy Condition=" '$(Configuration)' == 'Debug' " SourceFiles="Scripts\Post-Deployment\Default.Script.PostDeployment.sql" DestinationFiles="Scripts\Post-Deployment\Script.PostDeployment.sql" OverwriteReadOnlyFiles="true" />
      <Copy Condition=" '$(Configuration)' == 'Configuration1' " SourceFiles="Scripts\Post-Deployment\Configuration1.Script.PostDeployment.sql" DestinationFiles="Scripts\Post-Deployment\Script.PostDeployment.sql" OverwriteReadOnlyFiles="true" />
  </Target>

अंत में, आपको समाधान में मिलते-जुलते बिल्ड कॉन्फ़िगरेशन सेट अप करने होंगे।

साथ ही, किसी अन्य व्यक्ति के लिए अन्य कार्य करने की कोशिश करने के लिए, मैंने बिना किसी भाग्य के निम्नलिखित की भी कोशिश की:

  1. प्रोजेक्ट फ़ाइल XML को हैक करने के बजाय फ़ाइलों की प्रतिलिपि बनाने के लिए पोस्ट बिल्ड इवेंट बनाना। मैं इसे काम पर नहीं ला सका क्योंकि मैं पोस्ट परिनियोजन स्क्रिप्ट फ़ाइल के लिए सही पथ नहीं बना सका। यह कनेक्ट समस्या समस्या का वर्णन करती है

  2. :r कमांड को पास करने के लिए स्क्रिप्ट पथ के लिए चर का उपयोग करना। लेकिन मुझे इस दृष्टिकोण के साथ कई त्रुटियां मिलीं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (SSMS) में डेटाबेस मेल कैसे सेटअप करें

  2. SQL सर्वर 2005 में तालिका दिलचस्प व्यवहार से तालिका बनाम चयन colA, colB, आदि से * चुनें

  3. विभिन्न टाइमस्टैम्प के साथ डुप्लिकेट प्रविष्टियाँ

  4. टी-एसक्यूएल सबस्ट्रिंग - पहले और अंतिम नाम को अलग करना

  5. कौन सी SQL क्वेरी तेज़ है? जॉइन क्राइटेरिया या व्हेयर क्लॉज पर फ़िल्टर करें?