SQL सर्वर ': setvar' त्रुटि


123

मैं T-SQL में कुछ स्क्रिप्ट चर बनाने की कोशिश कर रहा हूं:

    /*
    Deployment script for MesProduction_Preloaded_KLM_MesSap
    */

    GO
    SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;

    SET NUMERIC_ROUNDABORT OFF;


    GO
    :setvar DatabaseName "MesProduction_Preloaded_KLM_MesSap"

हालाँकि, जब मैं इसे चलाता हूं, तो मुझे 'गलत सिंटैक्स पास': 'बताते हुए एक त्रुटि मिलती है। मैं क्या गलत कर रहा हूं?

जवाबों:


237

: सेवर केवल SQL कमांड मोड में काम करता है, इसलिए आप संभवतः प्रबंधन स्टूडियो में सामान्य SQL निष्पादन के भीतर हैं और कमांड मोड में स्वैप नहीं किया है।

यह "क्वेरी" मेनू पर जाकर, और "SQLCMD मोड" का चयन करके SQL सर्वर प्रबंधन स्टूडियो में उपयोगकर्ता इंटरफ़ेस के माध्यम से किया जा सकता है।


19
विजुअल स्टूडियो के: डेटा> स्कीमा तुलना उपयोगिता का उपयोग करते समय यह भी एक समस्या है। यदि आप परिणामी स्क्रिप्ट को उस उपयोगिता के भीतर से चलाते हैं जो आप ठीक हैं, लेकिन यदि आप तुलना करने के बाद परिवर्तन स्क्रिप्ट को निर्यात / xcopy करने का निर्णय लेते हैं और फिर परिणामी स्क्रिप्ट को SSMS में आयात / पेस्ट करने का प्रयास करते हैं तो ऊपर के रूप में यह विफल हो जाएगा। जाहिर है यह एक मुद्दा भी हो सकता है अगर आप एक बंडल तैनाती में डीबी परिवर्तन स्क्रिप्ट शामिल थे। इसलिए आपको स्क्रिप्ट को ऊपर दिए गए मेनू के माध्यम से चलाने से पहले SQL कमांड मोड को चालू करना होगा या यह सुनिश्चित करना होगा कि आपके कस्टम स्क्रिप्ट को चलने से पहले ऐसा किया जाए।
प्रिज्म

6
विज़ुअल स्टूडियो (2013) में: SQL मेनू-> निष्पादन सेटिंग्स-> SQLCMD मोड
21

मैं इस समस्या में चल रहा हूँ, एक scema प्रयोग की गई स्क्रिप्ट की स्थापना के बाद पहले स्टार्टअप पर अपने एप्लिकेशन से अपने डेटाबेस का निर्माण करने के लिए स्क्रिप्ट की तुलना करें, स्क्रिप्ट को एक्ज़ीक्यूटेनक्वेरी () में पास कर रहा हूँ। मुझे या तो SQLCMD मोड के माध्यम से इसे निष्पादित करने का तरीका खोजने की ज़रूरत होगी या स्क्रिप्ट को एक शुरुआत के लिए सभी चर को बदलने के लिए हैक करना होगा।
स्कॉट

सिर्फ एक FYI करें - मैंने अपनी DB परियोजना को प्रकाशित करने से उत्पन्न स्क्रिप्ट का उपयोग किया, और फिर सेटवार का उपयोग करके संदर्भित चर के सभी संदर्भ हटा दिए। मैंने अपने डेटाबेस का नाम क्रिएट डेटा के बजाय [$ डेटाबेसनाम] के रूप में हार्डकोड किया था, यह केवल डबएबस माइडीबीएनएएमईएआरए था। यह स्क्रिप्ट अब इंस्टॉल होने के बाद मेरे पहले एप्लिकेशन स्टार्टअप के दौरान निष्पादित डेटाबेस () के माध्यम से मेरा डेटाबेस बनाने के लिए काम करती है।
स्कॉट

10

निम्न छवि में वर्णित SQL सर्वर प्रबंधन स्टूडियो में sqlcmd मोड को सक्षम करें।

यहाँ छवि विवरण दर्ज करें


2

SQL2012 के लिए:

पर जाएँ: उपकरण / विकल्प / क्वेरी निष्पादन और डिफ़ॉल्ट रूप से, SQLCMD मोड में नए प्रश्नों को खोलें।

न्यू क्वेरी बटन को हिट करें और सुनिश्चित करें कि चर परिभाषाओं को हाइलाइट किया गया है, आपकी स्क्रिप्ट को अब सही ढंग से चलना चाहिए।

पिछला संस्करण:

http://blog.sqlauthority.com/2013/06/28/sql-server-how-to-set-variable-and-use-variable-in-sqlcmd-mode/


विजुअल स्टूडियो आपके प्रोजेक्ट के खिलाफ सिंटेक्स एरर्स की रिपोर्ट करेगा जब .sql फाइल ओपन होती है जो उपयोग करता है: सेवर। यहां वर्णित विकल्प परिवर्तन त्रुटियों को खत्म कर देगा, और बयान से "लाल स्क्वीगली अंडरलाइन" से बच जाएगा (आपको प्रभाव को देखने के लिए किसी भी खुले .sql फ़ाइलों को बंद करना होगा और फिर से खोलना होगा)।
ब्रिबी

0

बदलने का प्रयास करें :setvar DatabaseName "MesProduction_Preloaded_KLM_MesSap"

साथ में:

USE [MesProduction_Preloaded_KLM_MesSap]
GO

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