هڪ مرحلا طرف واري گائيڊ ڪريو TRY کي استعمال ڪرڻ ... SQL سرور غلطي کي هيڪ ڪرڻ لاء

عملن جي بغير کي چڪاس ڪرڻ جي بغير سڃاڻپ ڪريو

TRY ... ڪڇ بيان ۾ ٽرانسڪشن- SQL توهان جي ڊيٽابيس ايپليڪيشنن ۾ غلط حالتن کي ڳولي ۽ هٿ ڪري ٿو. اها بيان SQL سرور جي غلطي کي هٿيارن جي بنياد تي آهي ۽ مضبوط مضبوط ڊيٽابيس ايپليڪيشنن جي ترقي جو هڪ اهم حصو آهي. TRY ... سيلي SQL Server 2008، Azure SQL Database، Azure SQL Data Warehouse ۽ متوازي ڊيٽا Warehouse کان شروع ٿيندڙ سي ايس ايل سرور تي لاڳو ٿئي ٿو.

TRY..CATCH متعارف ڪرائڻ

TRY ... ڪارو ڪمائي توهان کي ٻه ٽرانسڪيڪل بيان ڪرڻ جي اجازت ڏئي ٿو - SQL بيانات: هڪ جيڪو توهان کي "ڪوشش" ڪرڻ جي ڪنهن ٻئي غلطين کي "پڪ" ڪرڻ لاء استعمال ڪرڻ چاهين ۽ ٻيو. جڏهن SQL سرور ڪيڏانهن رستو وٺي ٿو ... ڪڇ بيان، اها فوري طور تي هن بيان کي TRY شق ۾ شامل ڪندو آهي. جيڪڏهن TRY بيان ڪاميابي سان عمل ڪري ٿي، SQL سرور تي هلندو آهي. بهرحال، اگر TRY بیان ایک غلطی پیدا کرتا ہے، SQL Server کو CATCH بیان کو عملی طور پر دستی طور پر سنبھالنے کے لئے انجام دیتا ہے.

بنيادي نحو هن فارم کي وٺندو آهي:

BEGIN TRY {sql_statement | بيان_ رڪاوٽ) ختم ڪريو وٺو ٽيولوڊ ڪريو [{sql_statement | بيان_ رڪاوٽ}] ختم ڪيو ويو آهي. ]

ٽائيپ ڪريو ... مثال طور

اهو هڪ مثال جي استعمال جي ذريعي هن بيان جي استعمال کي سمجهڻ آسان آهي. تصور ڪريو ته توهان انساني وسيلن جي ڊيٽابيس جي منتظم آهيو جنهن ۾ "ملازمين" نالي هڪ ٽيبل آهي، جنهن ۾ توهان جي تنظيم جي هر ملازمت بابت معلومات شامل آهي. انهي جدول کي بنيادي ڪيزي طور هڪ انٽيگر ملازم جي سڃاڻپ نمبر استعمال ڪري ٿو. توهان شايد هيٺ ڏنل بيان کي توهان جي ڊيٽابيس ۾ نئين ملازم داخل ڪرڻ لاء استعمال ڪرڻ جي ڪوشش ڪري ٿو:

INSERT INTO ملازمين (id، first_name، last_name، واڌ) VALUES (12497، 'مائک'، 'چاپل'، 4201)

عام حالتن ۾، هي بيان ملازمين ميز ۾ قطار شامل ڪندو. بهرحال، جيڪڏهن 12497 جي سڃاڻپ سان گڏ هڪ ملازمت اڳ ۾ ئي ڊيٽابيس ۾ موجود آهي، قطار کي داخل ڪري بنيادي چئن رڪاوٽ جي ڀڃڪڙي ڪنداسين ۽ نتيجه هيٺ ڏنل غلطي ۾:

مگس 2627، سطح 14، رياست 1، لائن 1 ابتدائي ڪائنات جي پابنديون 'PK_employee_id'. اعتراض 'dbo.employees' ۾ نقل نقل نه ٺاھيو. بيان بيان ڪيو ويو آهي.

جڏهن ته هي غلطي توهان کي مسئلي جي حل ڪرڻ جي معلومات کي فراهم ڪندو آهي، ان سان گڏ ٻه مسئلا موجود آهن. پهريون، پيغام جو ذليل آهي. اهو غلطي ڪوڊ، ليڪن نمبر ۽ ٻين معلومات شامل ڪرڻ جي اوسط صارف کي غير معقول آهي. ٻيو، ۽ وڌيڪ اهم، اهو بيان کي رد ڪرڻ جو سبب بنائي سگهي ٿو ۽ ايپليڪيشن حادثي سبب ٿي سگهي ٿي.

متبادل اهو آهي TRY ۾ بيان لفافي آهي ... بيان ڪيل بيان، جيئن هيٺ ڏنل ڏيکاريل آهي:

ملازمتن ۾ پڙهائڻ جي ڪوشش ڪريو (id، first_name، last_name، واڌ) VALUES (12497، 'ميڪ'، 'چاپل'، 4201) آخر ٽري کڻڻ جي پرنٽ 'error:' + ERROR_MESSAGE ()؛ EXEC msdb.dbo.sp_send_dbmailprofile_name = 'ملازم ميل'،recipients = 'hr@foo.com'،body = 'نئين ملازم رڪارڊ ٺاهڻ ۾ هڪ غلطي پيدا ٿي.'،subject = 'ملازم ID نقل جي غلطي'؛ END CATCH

هن مثال ۾، ڪنهن غلطي جو اطلاع ملي ٿو ته ٻنهي صارف کي منتظم ۽ hr@foo.com اي ميل پتي تي عمل درآمد ڪن ٿا. ھيٺين غلطي کي ڏيکاريو ويو آھي:

غلطي: شروعاتي KEY جي خرابي جي خلاف 'PK_employee_id'. اعتراض 'dbo.employees' ۾ نقل نقل نه ٺاھيو. قطار ٽپال

سڀ کان وڌيڪ، خاص طور تي، ايپليڪيشن جي عمل کي عام طور تي جاري آهي، پروگرسر کي اجازت ڏيڻ جي غلطي سان غلطي کي هٿي ڏئي. TRY جو استعمال ڪريو ... ڪڇي بيان هڪڙو بهترين طريقو آهي جنهن کي غلطي سان پتو لڳائڻ ۽ ان کي حل ڪرڻ ۾ SQL Server ڊيٽابيس ايپليڪيشنون.

سکيا وڌيڪ

جيڪڏهن توهان تعمير ٿيل سوال ٻوليء جي باري ۾ وڌيڪ سکڻ چاهيو ٿا، پڙهائڻ وارو SQL .