क्यों है: r SQLCMD कमांड को पोस्ट परिनियोजन स्क्रिप्ट में गलत के रूप में चिह्नित किया गया है?


18

मैंने पोस्ट परिनियोजन स्क्रिप्ट के साथ कई बार काम किया है और हमेशा, सहजता से बिल्ड एक्शन "पोस्टडिप्लॉय" का उपयोग किया है, क्योंकि यह वही है। अब पहली बार मैं ":r somescript.sql"सिंटैक्स का उपयोग करने के लिए स्क्रिप्ट के टेम्पलेट से अंतर्निहित अनुदेश का पालन करने का प्रयास करता हूं ।

तुरंत इस लाइन को गलत के रूप में चिह्नित किया जा रहा है:

"SQL80001 ':' 'के बगल में गलत सिंटैक्स

मुझे "कोई नहीं" एक्शन बनाने के लिए पीडीएस सेट करने के सुझाव मिले। यह मदद नहीं करता है, त्रुटि रहती है। मुझे यहां क्या समझ नहीं आ रहा है?


खेद है कि मुझे स्पष्ट है कि "क्या स्क्रिप्ट है जो इसके लिए": r "है?" :)
एड इलियट

जवाबों:


17

यह मानते हुए कि त्रुटि निर्माण प्रक्रिया के दौरान होती है, और आपके पास कोई वास्तविक वाक्यविन्यास त्रुटियां नहीं हैं, और यह एक सरल है

:r path\to\file.sql

तब त्रुटि तब होती है जब आयात की जा रही फ़ाइल मौजूद नहीं होती है। कृपया फ़ाइल का स्थान जांचें। यदि आपने एक पूर्ण पथ प्रदान नहीं किया है, तो पथ समाधान फ़ोल्डर के सापेक्ष होगा (कम से कम मेरे लिए यह है)।

यदि विकसित करते समय, आप उस त्रुटि को देखना चाहते हैं जो निर्माण प्रक्रिया की रिपोर्ट करती है, तो विज़ुअल स्टूडियो में टी-एसक्यूएल संपादक में "SQLCMD मोड" को सक्षम करना सुनिश्चित करें। बटन पट्टी में दाईं ओर एक बटन है "!" उसमें यह सक्षम होना चाहिए। या आप SQL मेनू पर जा सकते हैं , Transact-SQL Editor -> चुनें, निष्पादन सेटिंग्स -> चुनें , फिर अंत में SQLMMD मोड का चयन करें । अब जब आप स्क्रिप्ट निष्पादित करते हैं, तो यह सही ढंग से व्याख्या करेगा :r, ठीक वैसे ही जैसे बिल्ड / पब्लिश प्रक्रिया करती है।

इसके अलावा, आपके पोस्ट डिप्लॉय स्क्रिप्ट (PDS) को पोस्ट बिल्ड के लिए अपनी बिल्ड एक्शन सेट करने की आवश्यकता है । यदि यह किसी के लिए भी सेट नहीं है, तो यह SSDT बिल्ड प्रक्रिया द्वारा पूरी तरह से छोड़ दिया जाएगा।


4

मान्य त्रुटि

इसका कारण यह है कि :r somescript.sqlमान्य वर्ग नहीं है। आप एक वाक्यविन्यास त्रुटि देख रहे हैं, जो कि त्रुटि संदेश बताता है।

SQL80001: ':' के पास गलत सिंटैक्स।

SQLCMD मोड

पोस्ट परिनियोजन स्क्रिप्ट SQLCMD मोड के तहत निष्पादित की जाती है।

Sqlcmd उपयोगिता आपको SQLCMD मोड में क्वेरी संपादक में, Windows स्क्रिप्ट फ़ाइल में या SQL Server के किसी ऑपरेटिंग सिस्टम (Cmd.exe) कार्य चरण में कमांड प्रॉम्प्ट पर Transact-SQL स्टेटमेंट, सिस्टम प्रक्रिया और स्क्रिप्ट फ़ाइल दर्ज करने देती है। एजेंट की नौकरी। यह उपयोगिता Transact-SQL बैचों को निष्पादित करने के लिए ODBC का उपयोग करती है।

संकल्प

याद रखें कि आप DB से कनेक्ट करने और विजुअल स्टूडियो से sql निष्पादित करने में सक्षम हैं। यदि आप SSMS के भीतर एक ही स्क्रिप्ट खोलते हैं तो आपको यही सिंटैक्स त्रुटि दिखाई देगी। हालाँकि, SSMS और विज़ुअल स्टूडियो दोनों में, आप SQLCMD मोड को "सक्षम" कर सकते हैं।

वीएस 2017

  • sql स्क्रिप्ट वाले संपादक पर राइट क्लिक करें
  • निष्पादन सेटिंग्स पर क्लिक करें
  • SQLCMD मोड पर क्लिक करें
  • ध्यान दें कि आप SQL मेनू से एक ही काम कर सकते हैं

एसएसएमएस 17, एसएसएमएस 18

  • क्वेरी (मेनू आइटम)
  • SQLCMD मोड

यह सभी देखें

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