रेज़रर विधि
raiserror('Oh no a fatal error', 20, -1) with log
यह कनेक्शन को समाप्त कर देगा, जिससे बाकी स्क्रिप्ट को चलने से रोक दिया जाएगा।
ध्यान दें कि गंभीरता स्तर 20 या उच्चतर और WITH LOG
. दोनों इस तरह से काम करने के लिए विकल्प आवश्यक हैं।
यह GO स्टेटमेंट के साथ भी काम करता है, जैसे।
print 'hi'
go
raiserror('Oh no a fatal error', 20, -1) with log
go
print 'ho'
आपको आउटपुट देगा:
hi
Msg 2745, Level 16, State 2, Line 1
Process ID 51 has raised user error 50000, severity 20. SQL Server is terminating this process.
Msg 50000, Level 20, State 1, Line 1
Oh no a fatal error
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
ध्यान दें कि 'हो' मुद्रित नहीं है।
चेतावनी:
- यह केवल तभी काम करता है जब आप व्यवस्थापक ('sysadmin' भूमिका) के रूप में लॉग इन हों और आपके पास कोई डेटाबेस कनेक्शन न हो।
- यदि आप व्यवस्थापक के रूप में लॉग इन नहीं हैं, तो RAISEERROR() कॉल स्वयं विफल हो जाएगी और स्क्रिप्ट निष्पादित होती रहेगी ।
- जब sqlcmd.exe के साथ लागू किया जाता है, तो निकास कोड 2745 की सूचना दी जाएगी।
संदर्भ:http://www.mydatabasesupport.com/forums/ms-sqlserver/174037-sql-server-2000-abort-whole-script.html#post761334
नोएक्सेक विधि
एक अन्य तरीका जो GO स्टेटमेंट के साथ काम करता है, वह है set noexec on
. इससे बाकी स्क्रिप्ट को छोड़ दिया जाता है। यह कनेक्शन को समाप्त नहीं करता है, लेकिन आपको noexec
. चालू करने की आवश्यकता है किसी भी आदेश के निष्पादित होने से पहले फिर से बंद करें।
उदाहरण:
print 'hi'
go
print 'Fatal error, script will not continue!'
set noexec on
print 'ho'
go
-- last line of the script
set noexec off -- Turn execution back on; only needed in SSMS, so as to be able
-- to run this script again in the same session.