Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर - SQL स्क्रिप्ट के निष्पादन को रोकें या रोकें

रेज़रर विधि

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर कर्सर प्रकार - डायनेमिक कर्सर | SQL सर्वर ट्यूटोरियल / TSQL ट्यूटोरियल

  2. Salesforce SOQL के साथ SQL सर्वर का उपयोग करने के लिए युक्तियाँ

  3. विभिन्न सर्वरों पर दो डेटाबेस में दो तालिकाओं को जोड़कर डेटा की क्वेरी करना

  4. संदेश 8672, स्तर 16, राज्य 1, पंक्ति 1 MERGE कथन ने एक ही पंक्ति को एक से अधिक बार अद्यतन या हटाने का प्रयास किया

  5. बिना किसी विफलता के SQL सर्वर लेनदेन लॉग फ़ाइल को कैसे पढ़ें के लिए समाधान