TRYU භාවිතා කිරීමට පියවරෙන් පියවර මාර්ගෝපදේශය ... SQL Server සේවා දෝෂයන් මඟහරවා ගැනීමට CATCH

ක්රියාත්මක වීම බාධා නොකොට දෝෂ හඳුනා ගන්න

Transact- SQL මඟින් TRY ... CATCH ප්රකාශය ඔබගේ දත්ත සමුදායේ යෙදුම් වලදී දෝෂ සහගත තත්ත්වයන් හසුරුවයි. මෙම ප්රකාශය SQL Server දෝෂ හැසිරවීමේ මුලිකාංගය වන අතර ශක්තිමත් දත්ත සමුදා යෙදුම් සංවර්ධනය කිරීමේ වැදගත් කොටසක් වේ. TRY ... CATCH 2008, Azure SQL දත්ත ගබඩාව, Azure SQL දත්ත ගබඩාව සහ සමාන්තර දත්ත ගබඩාව වෙත ආරම්භ කර ඇති SQL Server වෙත CAT CATER වලට අදාල වේ.

TRY..CATCH හඳුන්වා දීම

TRY ... CATCH ක්රියා කරයි ඔබ Transact-SQL ප්රකාශයන් දෙකක් නියම කිරීමට ඉඩ දීමෙන්: ඔබට "උත්සාහ" කිරීමට අවශ්ය වන අතර තවත් කෙනෙකුට ඇති විය හැකි යම් යම් දෝෂ "අල්ලා" භාවිතා කිරීමට භාවිතා කරයි. SQL Server TRY ... CATCH ප්රකාශය අසාර්ථක වූ විට, එය වහාම TRY වගන්තියෙහි ඇතුළත් කළ ප්රකාශය ක්රියාත්මක කරයි. TRY ප්රකාශය සාර්ථකව ක්රියාත්මක වුවහොත්, SQL Server සරලව ඇරඹේ. කෙසේ වෙතත්, TRY ප්රකාශය දෝශයක් උත්පාදනය කරයි නම්, SQL Server විසින් CATCH ප්රකාශය දෝෂ සහිතව හැසිරවිය යුතුය.

මූලික රීතය මෙම ආකාරයෙන් ගත වේ:

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

TRY ... CATCH නිදසුන

නිදසුනක් භාවිතා කිරීමෙන් මෙම ප්රකාශය භාවිතා කිරීම පහසුය. ඔබගේ සංවිධානයේ සිටින එක් එක් සේවකයා පිළිබඳ තොරතුරු අඩංගු "සේවක" යන තේමාවක් සහිත මානව සම්පත් දත්ත ගබඩාවක පරිපාලකයෙකු බව සිතන්න. එම වගුව ප්රාථමික යතුර ලෙස පූර්ණ සංඛ්යා සේවක හැඳුනුම් අංකය භාවිතා කරයි. ඔබගේ දත්ත සමුදාය තුළ නව සේවකයෙකු ඇතුළත් කිරීමට පහත ප්රකාශය භාවිතා කිරීමට ඔබ උත්සාහ කළ හැකිය:

සේවකයින්ට ඇතුල් කරන්න (id, first_name, last_name, extension) VALUES (12497, 'මයික්', 'චැප්ල්', 4201)

සාමාන්ය තත්වයන් යටතේ මෙම ප්රකාශය සේවක මේසය වෙත පේළියක් එකතු කරනු ඇත. කෙසේ වෙතත්, ID 12497 සමඟ සේවකයෙකු දැනටමත් පවතින දත්ත සමුදායේ පවතී නම්, පේළිය ඇතුළත් කිරීම ප්රාථමික මූලික බාධාව උල්ලංඝනය කර ඇති අතර පහත දැක්වෙන දෝෂය හේතුවෙන්:

Msg 2627, 14 වන මට්ටම, ප්රාථමික 1, පේළිය 1 PRIMARY KEY බාධකයේ "PK_employee_id" උල්ලංඝණය කිරීම. 'Dbo.employees' වස්තුවේ අනුපිටපත් යතුර ඇතුල් කළ නොහැක. ප්රකාශය අවසන් වී ඇත.

ගැටළුව විසන්ධි කිරීම සඳහා ඔබට අවශ්ය තොරතුරු මෙම දෝෂය සපයන අතර, එහි ගැටළු දෙකක් ඇත. පළමුව, පණිවුඩය සංකේතාත්මක ය. සාමාන්ය පරිශීලකයාට නොසලකා හැරීමේ දෝෂ සහිත කේත, රේඛා අංක සහ අනෙකුත් තොරතුරු ඇතුළත් වේ. දෙවනුව, ඊට වඩා වැදගත් වන්නේ, ප්රකාශය නැවැත්වීමට හා යෙදුමක් කඩා වැටීමට හේතු විය හැක.

විකල්පයක් වන්නේ, TRY ... CATCH ප්රකාශයේ ප්රකාශය ආදේශ කිරීමයි: පහත දැක්වෙන පරිදි:

(උදා: පළමු, නම, අන්තිම නම, දිගුව) VALUES (12497, 'මයික්', 'චැප්ල්', 4201) අවසන් කරන්න CATCH PRINT 'දෝෂ:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'සේවක තැපැල්', @recipients = 'hr@foo.com','bodybody = 'නව සේවක වාර්ථාවක් නිර්මාණය කිරීමේදී දෝශයක් ඇති විය.', @subject = 'සේවක හැඳුනුම්පත් අනුපිටපත දෝෂය'; එඩ්ඩ් කැච්

මෙම උදාහරණයේදී සිදු වන ඕනෑම දෝෂයක් මෙම විධානය ක්රියාත්මක කරන පරිශීලකයා සහ hr@foo.com ඊ-තැපැල් ලිපිනය. පරිශීලකයාට පෙන්වන දෝෂය පහත දැක්වේ:

දෝෂය: PRIMARY KEY බාධකය "PK_employee_id" උල්ලංඝනය කිරීම. 'Dbo.employees' වස්තුවේ අනුපිටපත් යතුර ඇතුල් කළ නොහැක. තැපැල් පැදෙව්වේ.

වඩාත්ම වැදගත් වන්නේ, යෙදුම් ක්රියාත්මක කිරීම සාමාන්යයෙන් සිදු වන අතර, ක්රමලේඛකයා නොමසුරු ලෙස හැසිරවීමට ඉඩ සලසයි. TRY භාවිතා කිරීම ... CATCH ප්රකාශය SQL සර්වර් දත්තගබඩාවේ යෙදීම් තුල ඇතිවන දෝෂයන් හඳුනාගෙන ඒවා හැසිරවීමට පහසු ක්රමයකි.

තව ඉගෙන ගන්න

ව්යුහගත Query භාෂාව පිළිබඳ වැඩි විස්තර දැන ගැනීමට අවශ්ය නම්, SQL වෙත හැඳින්වීම කියවන්න.