यहां बताया गया है कि मैं इसे कैसे करूंगा:
PRINT 'This runs'
go
SELECT 0/0, 'This causes an error'
go
if (@@error <> 0)
Begin
set nocount on
set noexec on
End
GO
PRINT 'This should not run'
go
set noexec off
set nocount off
GO
"नोएक्सेक" मोड एसएसएमएस को एक ऐसी स्थिति में रखता है जहां यह सिर्फ टी-एसक्यूएल को संकलित करता है और वास्तव में इसे निष्पादित नहीं करता है। यह एक्ज़िक्यूट (F5) के बजाय गलती से पार्स टूलबार बटन (Ctrl+F5) दबाने जैसा है।
अपनी स्क्रिप्ट के अंत में noexec को वापस बंद करना न भूलें। अन्यथा उपयोगकर्ता स्थायी "कमांड (कमांड) सफलतापूर्वक पूर्ण होने से भ्रमित होने वाले हैं।" संदेश।
मैं TRY CATCH ब्लॉक का उपयोग करने के बजाय बाद के बैच में @@ त्रुटि के खिलाफ चेक का उपयोग करता हूं। अगले बैच में @@ त्रुटि का उपयोग करने से संकलन त्रुटियां पकड़ में आएंगी, जैसे "तालिका मौजूद नहीं है"।
नोएक्सेक मोड के अलावा, मैं नोकाउंट मोड को भी चालू करता हूं। नोएक्सेक मोड ऑन और नोकाउंट ऑफ के साथ, आपके प्रश्न अभी भी एक संदेश "(0 पंक्तियाँ प्रभावित)" की रिपोर्ट करेंगे। संदेश हमेशा शून्य पंक्तियों की रिपोर्ट करता है, क्योंकि आप noexec मोड में हैं। हालांकि, नोकाउंट चालू करने से ये संदेश दब जाते हैं।
यह भी ध्यान दें कि यदि SQL सर्वर 2005 चल रहा है तो आप जिस कमांड को छोड़ रहे हैं वह अभी भी त्रुटि संदेश दे सकता है यदि यह किसी तालिका का संदर्भ देता है जो मौजूद नहीं है और यदि बैच में पहला आदेश है तो कमांड। एक फर्जी प्रिंट स्टेटमेंट के साथ बैच में दूसरी कमांड होने के लिए कमांड को मजबूर करना इसे दबा सकता है। देखें एमएस बग #569263 अधिक जानकारी के लिए।