Mwongozo wa Hatua-na-Hatua ya Kutumia TRY ... KATIKA Kushughulikia Makosa ya SQL Server

Tambua makosa bila kuingilia utekelezaji

Taarifa TRY ... CATCH katika Transact- SQL hutambua na kushughulikia hali ya makosa katika maombi yako ya msingi. Neno hili ni jiwe la msingi la utunzaji wa hitilafu la SQL Server na ni sehemu muhimu ya kuendeleza maombi ya nguvu ya database. Jaribu ... KATIKA inatumika kwa SQL Server kuanzia mwaka 2008, Sura ya Sura ya SQL, Duka la Sura ya SQL ya Sura na Sambamba Data ya Ghala.

Kuanzisha TRY..CATCH

Jaribu ... CATCH inafanya kazi kwa kukuruhusu kutaja kauli mbili za Transact-SQL: moja ambayo unataka "jaribu" na mwingine kutumia "kukamata" makosa yoyote ambayo yanaweza kutokea. Wakati SQL Server inakutana na TRY ... taarifa ya CATCH, inafanya kauli hiyo mara moja ikiwa ni pamoja na kifungu cha TRY. Ikiwa kauli ya TRY inafanikiwa kwa ufanisi, SQL Server inaendelea tu. Hata hivyo, ikiwa taarifa ya TRY inaleta hitilafu, SQL Server inafanya kauli ya CATCH kwa kushughulikia kwa uangalifu hitilafu.

Syntax ya msingi inachukua fomu hii:

BEZA TRY {sql_statement | kizuizi cha maandishi} END Jaribu KUFUNZA KATIKA [{sql_statement | taarifa_block}] END CATCH [; ]

Jaribu ... Mfano Mfano

Ni rahisi kuelewa matumizi ya kauli hii kupitia matumizi ya mfano. Fikiria kuwa wewe ni msimamizi wa database ya rasilimali za binadamu ambayo ina meza inayoitwa "Wafanyakazi," iliyo na habari kuhusu kila mmoja wa wafanyakazi katika shirika lako. Jedwali hilo linatumia nambari ya ID ya mfanyakazi kamili kama ufunguo wa msingi . Unaweza kujaribu kutumia taarifa hapa chini ili kuingiza mfanyakazi mpya kwenye databana yako:

Tumia WAKATI (id, kwanza_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)

Kwa hali ya kawaida, taarifa hii ingeongeza safu kwa meza ya Waajiriwa. Hata hivyo, ikiwa mfanyakazi aliye na ID 12497 tayari yupo katika databana, kuingiza mstari ungeuka kinyume cha ufunguo wa msingi na kusababisha hitilafu ifuatayo:

Msg 2627, Kiwango cha 14, Hali ya 1, Line 1 Ukiukaji wa kizuizi cha PRIMARY KEY 'PK_employee_id'. Haiwezi kuingiza ufunguo wa duplicate kwenye kitu cha 'dbo.employees'. Taarifa hiyo imekamilika.

Ingawa kosa hili linakupa habari unazohitaji kutatua shida, kuna masuala mawili nayo. Kwanza, ujumbe ni kilio. Inajumuisha nambari za kosa, namba za mstari na habari zingine zisizoeleweka kwa mtumiaji wa wastani. Pili, na muhimu zaidi, husababisha kauli hiyo iondoe na inaweza kusababisha ajali ya maombi.

Njia mbadala ni kuunganisha taarifa katika TRY ... kauli ya CATCH, kama inavyoonyeshwa hapa chini:

BEAZA Jaribu kuingiza wafanyakazi (id, kwanza_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201) ENDEZA KUFUNZA KATIKA MCHANGOJI 'Hitilafu:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Wafanyabiashara Mail', @recipients = 'hr@foo.com', @body = 'Hitilafu ilitokea kujenga rekodi mpya ya mfanyakazi.', @subject = 'Error Repupration ID'; ENDEZA KATIKA

Katika mfano huu, makosa yoyote yanayotokea yanaripotiwa kwa mtumiaji anayefanya amri na anwani ya barua pepe ya hr@foo.com. Hitilafu iliyoonyeshwa kwa mtumiaji inaonekana chini:

Hitilafu: Ukiukaji wa kikwazo cha PRIMARY KEY 'PK_employee_id'. Haiwezi kuingiza ufunguo wa duplicate kwenye kitu cha 'dbo.employees'. Imehifadhiwa kwa barua.

Jambo muhimu zaidi, utekelezaji wa programu unaendelea kwa kawaida, kuruhusu programu ya kushikilia kwa upole makosa. Matumizi ya TRY ... Taarifa ya CATCH ni njia ya kifahari ya kuchunguza na kushughulikia makosa yaliyotokea katika maombi ya msingi ya SQL Server.

Kujifunza Zaidi

Ikiwa unataka kujifunza zaidi kuhusu Lugha ya Swali la Uundo, soma Utangulizi wa SQL .