TRY కు ఒక దశల వారీ మార్గదర్శిని ... SQL సర్వర్ లోపాలు నిర్వహించడానికి క్యాచ్

అమలుకు అంతరాయం కలిగించకుండా లోపాలను గుర్తించండి

TRY ... లావాదేవీ- SQL లో CATCH ప్రకటన మీ డేటాబేస్ అనువర్తనాలలో దోష పరిస్థితులను గుర్తించి నిర్వహిస్తుంది. ఈ ప్రకటన SQL సర్వర్ లోపం నిర్వహణ యొక్క మూలస్తంభంగా ఉంది మరియు బలమైన డేటాబేస్ అనువర్తనాలను అభివృద్ధి చేయడం యొక్క ఒక ముఖ్యమైన భాగం. TRY ... CATCH SQL సర్వర్ ప్రారంభించి 2008, Azure SQL డేటాబేస్, Azure SQL డేటా వేర్హౌస్ మరియు సమాంతర డేటా వేర్హౌస్.

TRY..CATCH పరిచయం

TRY ... CATCH మీరు రెండు ట్రాన్సాక్ట్- SQL స్టేట్మెంట్లను పేర్కొనడం ద్వారా పనిచేస్తుంది: మీరు "ప్రయత్నించండి" మరియు మరొక ఉద్భవించే ఏ లోపాలు "క్యాచ్" ఉపయోగించడానికి మరొక. SQL సర్వర్ ఒక TRY కలుసుకున్నప్పుడు ... CATCH ప్రకటన, ఇది వెంటనే TRY నిబంధనలో చేర్చబడిన ప్రకటన అమలు. TRY స్టేట్మెంట్ విజయవంతంగా అమలు చేస్తే, SQL సర్వర్ కేవలం కదులుతుంది. అయినప్పటికీ, TRY స్టేట్మెంట్ లోపం ఏర్పడినట్లయితే, SQL సర్వర్ దోషాన్ని సరళంగా నిర్వహించడానికి CATCH ప్రకటనను నిర్వహిస్తుంది.

ప్రాథమిక సింటాక్స్ ఈ ఫారమ్ను తీసుకుంటుంది:

దయచేసి TRY {sql_statement | statement_block} END ప్రయత్నించండి CATCH [[sql_statement | statement_block}] END క్యాచ్ [; ]

TRY ... క్యాచ్ ఉదాహరణ

ఇది ఒక ఉదాహరణ ఉపయోగం ద్వారా ఈ ప్రకటన యొక్క ఉపయోగం అర్థం చేసుకోవడం సులభం. మీ సంస్థలోని ఉద్యోగుల గురించి సమాచారాన్ని కలిగి ఉన్న "ఉద్యోగులు" అనే పట్టికను కలిగి ఉన్న మానవ వనరుల డేటాబేస్ యొక్క నిర్వాహకుడు అని ఇమాజిన్ చేయండి. ఆ పట్టిక ప్రాధమిక కీ వలె పూర్ణ సంఖ్యలో ఉద్యోగి ID సంఖ్యను ఉపయోగిస్తుంది. మీరు మీ డాటాబేస్లో కొత్త ఉద్యోగిని చేర్చడానికి దిగువ స్టేట్మెంట్ను ఉపయోగించేందుకు ప్రయత్నించవచ్చు:

INSERT INTO ఉద్యోగులు (id, first_name, last_name, పొడిగింపు) VALUES (12497, 'మైక్', 'చాపెల్', 4201)

సాధారణ పరిస్థితుల్లో, ఈ ప్రకటన ఉద్యోగుల పట్టికకు వరుసను జోడిస్తుంది. ఏదేమైనప్పటికీ, ID 12497 తో ఉన్న ఒక ఉద్యోగి ఇప్పటికే డేటాబేస్లో ఉన్నట్లయితే, వరుసను ఇన్సర్ట్ చేస్తే ప్రాధమిక కీ పరిమితిని ఉల్లంఘిస్తుంది మరియు ఈ కింది లోపానికి దారి తీస్తుంది:

Msg 2627, లెవల్ 14, స్టేట్ 1, లైన్ 1 ఉల్లంఘన ప్రాధమిక కీలక పరిమితి 'PK_employee_id'. వస్తువు 'dbo.employees' లో నకిలీ కీని ఇన్సర్ట్ చేయలేరు. ప్రకటన రద్దు చేయబడింది.

ఈ దోషాన్ని మీరు సమస్యను పరిష్కరించుకోవాల్సిన సమాచారాన్ని మీకు అందిస్తున్నప్పుడు, దానితో రెండు సమస్యలు ఉన్నాయి. మొదట, సందేశం గుప్తమైనది. ఇది లోపం సంకేతాలు, లైన్ నంబర్లు మరియు సగటు వినియోగదారుకు అర్ధం లేని ఇతర సమాచారాన్ని కలిగి ఉంటుంది. రెండోది, మరియు మరింత ముఖ్యంగా, ఇది ప్రకటనను నిలిపివేస్తుంది మరియు దరఖాస్తు క్రాష్కు కారణం కావచ్చు.

ప్రత్యామ్నాయం TRY లో ప్రకటన మూసివేయాలని ఉంది ... CATCH ప్రకటన, క్రింద చూపిన విధంగా:

దయచేసి ప్రారంభించు CATCH PRINT 'లోపం:' + ERROR_MESSAGE (), (+ 4) EXEC msdb.dbo.sp_send_dbmail @profile_name = 'ఉద్యోగుల మెయిల్', @ అనుబంధం = 'hr@foo.com', @body = 'కొత్త ఉద్యోగి రికార్డు సృష్టించేటప్పుడు ఒక లోపం ఏర్పడింది.', @ సబ్జెక్ట్ = 'ఉద్యోగి ID నకిలీ లోపం'; క్యాచ్ ముగుస్తుంది

ఈ ఉదాహరణలో, సంభవించే ఏదైనా దోషాలు వినియోగదారుని ఆదేశాన్ని మరియు hr@foo.com ఇ-మెయిల్ చిరునామాకు నివేదించబడతాయి. వినియోగదారుకు చూపిన లోపం క్రింద కనిపిస్తుంది:

లోపం: ప్రాథమిక కీ పరిమితి 'PK_employee_id' ఉల్లంఘన. వస్తువు 'dbo.employees' లో నకిలీ కీని ఇన్సర్ట్ చేయలేరు. మెయిల్ క్యూలో ఉంది.

ముఖ్యంగా, అప్లికేషన్ అమలు సాధారణంగా కొనసాగుతుంది, ప్రోగ్రామర్ను సరళంగా దోషాన్ని నిర్వహించడానికి వీలు కల్పిస్తుంది. TRY యొక్క ఉపయోగం ... CATCH ప్రకటన SQL సర్వర్ డేటాబేస్ అప్లికేషన్లు సంభవించే లోపాలు ముందుగానే గుర్తించి నిర్వహించడానికి ఒక సొగసైన మార్గం.

మరింత నేర్చుకోవడం

మీరు స్ట్రక్చర్డ్ క్వరీ లాంగ్వేజ్ గురించి మరింత తెలుసుకోవాలనుకుంటే, SQL కు పరిచయము చదవండి.