वापरून करण्याचा चरण-दर-चरण मार्गदर्शक ... SQL सर्व्हर त्रुटी हाताळण्यासाठी कॅच

एक्जिक्युशन खंडीत न करता त्रुटी ओळखणे

TRY ... ट्रान्सएक्शनमध्ये कॅच स्टेटमेंट- आपल्या डेटाबेस ऍप्लिकेशन्समध्ये एस क्यू एल शोधते व एरर स्टेटमेंट हाताळते. हे विधान SQL सर्व्हर त्रुटी हाताळणीचे कोनशिले आहे आणि मजबूत डेटाबेस अनुप्रयोग विकसित करणे हा महत्त्वाचा भाग आहे. प्रयत्न करा ... कॅच SQL सर्व्हर 2008 पासून सुरु होत आहे, ऍझूर SQL डेटाबेस, ऍझूर SQL डेटा वेअरहाऊस आणि पॅरलल डेटा वेअरहाऊस वर लागू आहे.

TRY..CATCH सादर करत आहे

प्रयत्न करा ... आपल्याला दोन Transact-SQL स्टेटमेंट्स निर्दिष्ट करण्याची परवानगी देऊन CATCH कार्य करते: एक आपण "वापरून" आणि इतर उद्भवू शकणार्या कोणत्याही त्रुटी "पकडण्यासाठी" वापरायचे आहेत. जेव्हा एस क्यू एल सर्व्हरला चकमकींचा सामना होतो तेव्हा ... कॅच कथन, ते ताबडतोब TRY कलममध्ये समाविष्ट केलेले विधान कार्यान्वित करते. TRY विधान यशस्वीरित्या कार्यान्वीत केल्यास, SQL सर्व्हर फक्त वर आणले तथापि, TRY विधान एरर जनरेट करते, तर एसयएल सर्व्हर एरर व्यवस्थित हाताळण्यासाठी CATCH स्टेटमेंट चालवते.

मूल वाक्य रचना हा फॉर्म घेते:

BEGIN प्रयत्न करा {sql_statement | statement_block} शेवटी आपण कॅचास [{sql_statement | statement_block}] END CATCH [; ]

प्रयत्न करा ... कॅच उदाहरण

एखाद्या उदाहरणाचा वापर करुन या विधानाचा वापर समजून घेणे सर्वात सोपा आहे. कल्पना करा की आपण मानवी संसाधनांचा प्रशासक आहात ज्यामध्ये "कर्मचारी" नामक एक सारणी समाविष्ट असते ज्यात आपल्या संस्थेतील प्रत्येक कर्मचा-यांबद्दलची माहिती असते. ती टेबल प्राथमिक की म्हणून पूर्णांक कमर्शियल आयडी नंबर वापरते. आपण नवीन डेटाबेस आपल्या डेटाबेसमध्ये घालण्यासाठी खालील विधवेचा वापर करण्याचा प्रयत्न करू शकता:

कर्मचार्यांकडे INSERT (id, first_name, last_name, extension) VALUES (124 9 7, 'माईक', 'चैपल', 4201)

सामान्य परिस्थितिंमध्ये, हे विधान कर्मचारी तक्त्यामध्ये एक पंक्ती जोडेल. तथापि, जर आयडी 12497 असलेले कर्मचारी आधीपासूनच डेटाबेसमध्ये अस्तित्वात असेल, तर पंक्ती घालून प्राथमिक की बाधाचे उल्लंघन होईल आणि खालील त्रुटी उद्भवतील:

एमएसबी 2627, लेव्हल 14, स्टेट 1, रेषा 1 'प्राथमिक के'ची' पीके_एम्मोरी_आयडी 'ची भंग. 'Dbo.employees' ऑब्जेक्टमध्ये डुप्लिकेट की समाविष्ट करू शकत नाही. विधान निरस्त केले गेले आहे.

ही त्रुटी आपल्याला समस्येचे निराकरण करण्यासाठी आवश्यक असलेली माहिती प्रदान करते, त्याच्यासह दोन समस्या आहेत प्रथम, संदेश गुप्त आहे यात एरर्स कोड, लाइन नंबर आणि इतर वापरकर्त्यांना अभिप्रेत असलेल्या इतर माहितीचा समावेश आहे. दुसरे, आणि सर्वात महत्वाचे म्हणजे, हे विधान निरस्त करते आणि अनुप्रयोग क्रॅश होऊ शकते.

पर्याय म्हणजे एका टीआरई ... कॅच स्टेटमेंटमध्ये हे विधान लपवा जे खाली दाखवले आहे.

BEGIN कर्मचारी (id, first_name, last_name, extension) VALUES मध्ये समाविष्ट करा (12497, 'माईक', 'चॅपल', 4201) शेवटी कॅप्चर प्रिंट 'त्रुटी टाइप करा:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'कर्मचारी मेल', @recipients = 'hr@foo.com', @body = 'नवीन कर्मचारी रेकॉर्ड तयार करताना त्रुटी आली.', @subject = 'कर्मचारी ID डुप्लिकेशन त्रुटी'; समाप्तीची कॅच

या उदाहरणामध्ये, आढळणाऱ्या कुठल्याही त्रुटीची नोंद वापरकर्ता आणि आदेश व hr@foo.com ईमेल पत्ता दोन्हीकडे केली आहे. वापरकर्त्याला दाखवलेल्या त्रुटी खाली दिसेल:

त्रुटी: प्राथमिक की बांधा 'PK_employee_id' चे उल्लंघन 'Dbo.employees' ऑब्जेक्टमध्ये डुप्लिकेट की समाविष्ट करू शकत नाही. मेल रांगेत.

सर्वात महत्त्वाचे म्हणजे, अनुप्रयोग अंमलबजावणी सामान्यत: चालू राहते, जेणेकरुन प्रोग्रामर त्रुटीने गृहीत धरले जाऊ शकेल. TRY चा वापर ... कॅच कथन SQL सर्व्हर डेटाबेस अनुप्रयोगांमध्ये होणारी त्रुटी शोधणे आणि हाताळणे हे एक मोहक मार्ग आहे.

अधिक शिकणे

स्ट्रक्चर्ड क्विझ भाषाबद्दल अधिक जाणून घ्यायचे असल्यास, SQL चे परिचय वाचा.