TRY प्रयोग गर्ने चरण-दर-चरण गाइड ... SQL Server त्रुटिहरू संभाला गर्न CATCH

निष्पादन रोक्न बिना त्रुटिहरू पहिचान गर्नुहोस्

TRY ... CATCH कथनमा ट्र्याक्ट- SQL पत्ता लगाउँदछ र त्रुटि अवस्थाहरू तपाईंको डेटाबेस अनुप्रयोगमा ह्यान्डल गर्दछ। यो कथन SQL Server त्रुटि होस्टिंग को आधारशिला हो र मजबूत डेटाबेस अनुप्रयोगों को विकास को एक महत्वपूर्ण भाग हो। TRY ... CATCH 2008, Azure SQL डेटाबेस, Azure SQL डेटा वेयरहाउस र समानांतर डेटा वेयरहाउस संग SQL Server मा लागू हुन्छ।

TRY..CATCH परिचय गर्दै

TRY ... CATCH ले तपाइँलाई दुई ट्रान्जिट-एसक्यूएल बयान निर्दिष्ट गर्न अनुमति दिन्छ: जुन तपाइँले "प्रयास" गर्न चाहनुहुन्छ र अर्को "कुनै" त्रुटि उत्पन्न गर्न "catch" प्रयोग गर्न चाहानुहुन्छ। जब SQL सर्भरले TRY गुमाउँछ ... CATCH कथन, यसलाई तुरुन्तै ट्रय क्लोजमा समावेश गरिएको कथनलाई निष्पादित गर्छ। यदि TRY बयान सफलतापूर्वक निष्पादित गर्दछ भने, SQL Server मा मात्र चालु हुन्छ। यद्यपि, यदि TRY बयान त्रुटि उत्पन्न गर्दछ, SQL Server निष्पादित गर्न को लागि CATCH बयान निष्पक्ष त्रुटि को संभालने को लागि।

आधारभूत वाक्य रचनाले यो फारम लिन्छ:

BEGIN TRY {sql_statement | statement_block} END TRY BEGIN CATCH [{sql_statement | statement_block}] END CATCH [; ]

TRY ... उदाहरण हेर्नुहोस्

उदाहरणको प्रयोग गरेर यो कथनको प्रयोग बुझ्न सबै भन्दा सजिलो छ। कल्पना गर्नुहोस् कि तपाईं एक मानव संसाधन डेटाबेस को प्रशासक हुनुहुन्छ जुन "कर्मचारीहरू" नामकरण गरिएको तालिका समावेश गर्दछ, "तपाईंको संगठनको प्रत्येक कर्मचारीको बारेमा जानकारी" समावेश गर्दछ। त्यो तालिकाले प्राथमिक कुञ्जीको रूपमा एक पूर्णांक कर्मचारी आईडी नम्बर प्रयोग गर्दछ। तपाईंले आफ्नो डाटाबेसमा नयाँ कर्मचारी सम्मिलित गर्न तल बयान प्रयोग गर्न प्रयास गर्न सक्नुहुन्छ:

INSERT कर्मचारीहरू (आईडी, first_name, last_name, एक्सटेन्सन) VALUES (12497, 'माइक', 'चैपल', 4201)

सामान्य परिस्थितिमा, यो कथन कर्मचारी तालिकामा पङ्क्ति थपिनेछ। यद्यपि, यदि 12 4 9 7 आईडीको कर्मचारीले डेटाबेसमा पहिल्यै अवस्थित छ भने, पङ्क्ति सम्मिलित गर्नाले प्राथमिक कुञ्जी अवरोधको उल्लङ्घन गर्नेछ र निम्न त्रुटिमा परिणाम:

मेक्सिको 2627, स्तर 14, राज्य 1, रेखा 1 प्राथमिक कुंजी अवरोध 'PK_employee_id' को उल्लङ्घन। वस्तु 'dbo.employees' मा नक्कल कुञ्जी सम्मिलित गर्न सकिँदैन। कथन समाप्त भएको छ।

यो त्रुटिले तपाईंलाई समस्या निवारण गर्ने जानकारीको साथ प्रदान गर्दछ, त्यहाँ यसको साथ दुई मुद्दाहरू छन्। पहिलो, सन्देश क्रिप्ट छ। यसले त्रुटि कोडहरू, लाइन नम्बरहरू र अन्य जानकारीहरू औसत प्रयोगकर्तालाई असंगत समावेश गर्दछ। दोस्रो, र अधिक महत्त्वपूर्ण कुरा, यसले विवरण रद्द गर्दछ र अनुप्रयोग क्र्यासको कारण हुन सक्छ।

विकल्प TRY मा कथन लपेटो छ ... CATCH बयान, तल देखाइएको अनुसार:

कर्मचारीहरू (उदाहरण आईडी, first_name, last_name, विस्तार) मा जानुहोस्। (12497, 'माइक', 'चैपल', 4201) END TRY BEGIN CATCH प्रिन्ट 'त्रुटि:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'कर्मचारी मेल', @recipients = 'hr@foo.com', @body = 'नयाँ कर्मचारी रेकर्ड सिर्जना गर्दा एउटा त्रुटि देखा पर्यो।', @subject = 'कर्मचारी आईडी डुप्लिकेट त्रुटि'; END CATCH

यस उदाहरणमा, कुनै पनि त्रुटिहरू जुन प्रयोगकर्ताहरू आदेश र hr@foo.com ई-मेल ठेगाना कार्यान्वित गर्न रिपोर्ट गरिन्छ। प्रयोगकर्तालाई देखाइएको त्रुटि तल देखा पर्दछ:

त्रुटि: प्राथमिक KEY बाधाको उल्लङ्घन 'PK_employee_id'। वस्तु 'dbo.employees' मा नक्कल कुञ्जी सम्मिलित गर्न सकिँदैन। मेल लामियो।

सबैभन्दा महत्त्वपूर्ण कुरा, अनुप्रयोग कार्यान्वयन सामान्यतया जारी छ, प्रोग्रामरलाई गम्भीर रूपमा त्रुटिलाई सम्हाल्न अनुमति दिन्छ। TRY को प्रयोग गर्नुहोस् ... CATCH कथन SQL Server डेटाबेस अनुप्रयोगमा आशैली पत्ता लगाउने र संभाला गर्न एक सुरुवात तरिका हो।

थप सिक्नुहोस्

यदि तपाईं संरचित क्वेरी भाषाको बारे बढी जान्न चाहानुहुन्छ भने, SQL लाई परिचय परिचय गर्नुहोस्