जवाबों:
जैसा कि कहा गया है, कोई रास्ता नहीं है।
हालाँकि, एक चीज़ जो हम अपने स्क्रिप्ट हेडर में क्विक चेक को शामिल करते हैं, वह यह निर्धारित करने के लिए करते हैं कि SQLCMD मोड चालू है (या नहीं तो स्क्रिप्ट को समाप्त करें):
:setvar DatabaseName "MyDatabase"
GO
IF ('$(DatabaseName)' = '$' + '(DatabaseName)')
RAISERROR ('This script must be run in SQLCMD mode. Disconnecting.', 20, 1) WITH LOG
GO
-- The below is only run if SQLCMD is on, or the user lacks permission to raise fatal errors
IF @@ERROR != 0
SET NOEXEC ON
GO
PRINT 'You will not see this unless SQLCMD mode is on'
-- Rest of script goes here
GO
SET NOEXEC OFF
GO
एक कारण है 20 गंभीरता का उपयोग किया जाता है, यह तुरंत कनेक्शन को मारने के लिए जाता है, किसी भी अधिक स्क्रिप्ट कोड को चलाने से रोकता है, भले ही GO
स्क्रिप्ट में बाद में बैच टर्मिनेटर हों।
संकेत प्रणाली की समस्याएं और घातक त्रुटियां हैं, जिसका अर्थ है कि डेटाबेस इंजन कार्य जो एक स्टेटमेंट या बैच निष्पादित कर रहा है, अब नहीं चल रहा है। कार्य क्या हुआ और फिर समाप्त हो जाता है के बारे में जानकारी दर्ज करता है। ज्यादातर मामलों में, डेटाबेस इंजन के उदाहरण के लिए आवेदन कनेक्शन भी समाप्त हो सकता है । यदि ऐसा होता है, तो समस्या के आधार पर, एप्लिकेशन पुन: कनेक्ट करने में सक्षम नहीं हो सकता है।
इस श्रेणी के त्रुटि संदेश एक ही डेटाबेस में डेटा तक पहुँचने की सभी प्रक्रियाओं को प्रभावित कर सकते हैं और संकेत दे सकते हैं कि डेटाबेस या ऑब्जेक्ट क्षतिग्रस्त है। 19 से 24 तक की गंभीरता स्तर वाले त्रुटि संदेश त्रुटि लॉग में लिखे गए हैं।
SET NOEXEC ON
स्क्रिप्ट में किसी और चीज को चलाने से रोकने के लिए एक अतिरिक्त सुरक्षा उपाय के रूप में भी सेट कर सकते हैं ।
नहीं।
लेकिन आप हमेशा SQLCMD मोड में चल सकते हैं और इसमें T-SQL हो सकते हैं
SQLCMD कमांड और Transact-SQL के बीच एक स्पष्ट अंतर करने के लिए, सभी SQLCMD कमांड को एक कोलोन (:) के साथ उपसर्ग करने की आवश्यकता है।