2010-08-09 14 views
12

हम विजुअल स्टूडियो डाटाबेस प्रोफेशनल का उपयोग कर रहे हैं और यह तैनाती करते समय वातावरण के बीच अंतर करने के लिए SQLCMD चर का भारी उपयोग करता है।क्या स्क्रिप्ट में स्वचालित रूप से SQLCMD मोड को बल देना संभव है?

मुझे पता है कि संदर्भ स्थापित करने के लिए कई निर्देश उपलब्ध हैं (जैसे: सर्वर नाम के लिए कनेक्ट)। निष्पादन के लिए एसक्यूएलसीएमडी मोड को मजबूर करने के लिए स्क्रिप्ट के भीतर कोई तरीका है? हमारी तैनाती प्रक्रिया का हिस्सा डीबीए की जांच करना और स्क्रिप्ट निष्पादित करना है और यह एक अच्छा सुरक्षा नेट होगा (इसलिए मुझे उन्हें अपने निष्पादन मोड को SQLCMD पर सेट करने के लिए याद दिलाना नहीं है)।

+0

+1 इसी तरह के समाधान की तलाश में है। कभी पता लगाएं कि यह कैसे करें? –

+0

नहीं, अभी भी प्रतीक्षा कर रहा है। मैं एक बक्षीस शुरू करने में संकोच कर रहा हूँ। –

उत्तर

4

कोई समाधान नहीं, लेकिन काम के आसपास के रूप में, आप अपनी स्क्रिप्ट को कुछ चेतावनी में एम्बेड कर सकते हैं। This post मुझे इस कोड पर प्रेरित किया:

SET NOEXEC OFF; -- previous execution may have toggled it 
:setvar IsSqlCmdEnabled "True" 
GO 
IF ('$(IsSqlCmdEnabled)' = '$' + '(IsSqlCmdEnabled)') 
BEGIN 
    PRINT('Use SqlCmd-mode!!'); 
    SET NOEXEC ON; 
    -- RAISERROR ('This script must be run in SQLCMD mode.', 20, 1) WITH LOG 
END 
ELSE 
BEGIN 
    PRINT('Using SqlCmd-mode') 
    -- insert the code you really want to execute: 
    -- ... 
END 
SET NOEXEC OFF; -- do not disable next execution in this session 
+0

मुझे पता है कि यह देर हो चुकी है लेकिन भविष्य में इसे ढूंढने वाले किसी भी व्यक्ति के लिए: VS2010 प्रकाशित स्क्रिप्ट मूल रूप से यह करती है (उन्होंने एक विशेष '__IsSqlCmdEnabled' var सेट किया है, फिर तुरंत इसकी कीमत जांचें) लेकिन वे एक जोड़े के रूप में' SEEX NOEXEC ON 'भी सेट करते हैं स्क्रिप्ट में किसी और चीज को चलाने से रोकने के लिए सुरक्षा उपाय। –

+0

@Micheal, टिप के लिए धन्यवाद, मैंने 'NOEXEC' जोड़ा। (अनचाहे, इस समय के आसपास कोई SqlServer, लेकिन यह काफी आसान लग रहा है।) –

+0

केवल पहले रन – Paul

0

ऐसा प्रतीत नहीं होता है। मैंने एसएसएमएस परियोजना मोड की भी जांच की।

हालांकि, यदि आप बीआईडीएस में डेटाबेस प्रोजेक्ट बनाते हैं, तो पूर्व-तैनाती & डिफ़ॉल्ट रूप से SQLCMD मोड में चलने वाली पोस्ट-तैनाती स्क्रिप्ट्स।

मुझे पता है कि वह जवाब नहीं है जो आप चाहते हैं, लेकिन यह सबसे अच्छा है कि मैं आपको एक कस्टम एसएसएमएस प्लगइन बनाने का सहारा दे सकता हूं जो स्क्रिप्ट फ़ाइल में कुछ पाठ के आधार पर आपके लिए यह करेगा।

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