Treoir Céim-ar-Chéim chun TRÍÚ TRÍ ... CATCH chun earráidí Freastalaí SQL a láimhseáil

Aithint earráidí gan cur isteach ar fhorghníomhú

An TRY ... Braitheann ráiteas CATCH i Transact- SQL agus déileálann sé coinníollacha earráide i d'iarratais ar bhunachar sonraí. Is é an ráiteas seo ná bunchloch láimhseáil earráide SQL Server agus is cuid thábhachtach í d'fhorbairt iarratais bunachar sonraí láidir. TRY ... Tá feidhm ag CATCH le Freastalaí SQL ag tosú le 2008, Bunachar Sonraí Azure SQL, Ware Warehouse Warehouse agus Warehouse Sonraí Comhthreomhar.

Ag tabhairt isteach TRY..CATCH

TRY ... Oibríonn CATCH trína ligean duit dhá ráiteas Transact-SQL a shonrú: ceann ar mhaith leat "iarracht" a dhéanamh agus ceann eile a úsáid chun earráidí a d'fhéadfadh teacht chun cinn a "ghabháil". Nuair a bhíonn TRY Server ag TRY ... Ráiteas CATCH, déanann sé an ráiteas a chuimsítear sa chlásal TRY a fhorghníomhú láithreach. Má éiríonn leis an ráiteas TRY go rathúil, bogann SQL Server ar aghaidh. Mar sin féin, má ghineann an ráiteas TRY earráid, déanann SQL Server ráiteas CATCH a fhorghníomhú chun an earráid a láimhseáil go grinn.

Glacann an bunchruinniú an fhoirm seo:

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

TRY ... Sampla CATCH

Is furasta an úsáid a bhaint as an ráiteas seo a thuiscint trí shampla a úsáid. Samhlaigh go bhfuil tú mar riarthóir ar bhunachar sonraí acmhainní daonna ina bhfuil tábla ainmnithe "Fostaithe," ina bhfuil faisnéis faoi gach ceann de na fostaithe i do eagraíocht. Úsáideann an tábla sin uimhir ID slánuimhir d'fhostaithe mar phríomh-eochair . D'fhéadfá iarracht an ráiteas thíos a úsáid chun fostaí nua a chur isteach i do bhunachar sonraí:

INSERT INTO fostaithe (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)

Faoi imthosca gnáth, chuirfeadh an ráiteas seo sraith leis an tábla Fostaithe. Mar sin féin, má tá fostaí le ID 12497 ann cheana sa bhunachar sonraí, go gcuirfí isteach an tsraith an príomhshrian srian agus an earráid seo a leanas mar thoradh air:

Msg 2627, Leibhéal 14, Stádas 1, Líne 1 Srian le srian 'PK_employee_id' PRIMARY KEY. Ní féidir leis an eochair dhúbailt a chur isteach sa 'dbo.employees' réad. Cuireadh deireadh leis an ráiteas.

Cé go soláthraíonn an earráid seo an fhaisnéis a theastaíonn uait chun an fhadhb a réiteach, tá dhá cheist ann. Ar dtús, tá an teachtaireacht cripteach. Cuimsíonn sé cóid earráide, uimhreacha líne agus faisnéis eile nach féidir a thuiscint leis an meán-úsáideoir. Sa dara háit, agus níos tábhachtaí fós, tugann sé cúis leis an ráiteas a mhaolú agus d'fhéadfadh sé go dtarlódh timpiste iarratais.

Is é an rogha eile an ráiteas a chur isteach i TRY ... Ráiteas CATCH, mar atá léirithe thíos:

BEARTAÍOCHT IOMLÁN INTO Fostaithe (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201) DEARADH AN TRÍCHOCHT UM CHRÍOMH CATCH 'Earráid:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Ríomhphost an Fhostaí', @recipients = 'hr@foo.com', @body = 'Tharla earráid le taifead fostaí nua a chruthú.', @subject = 'Earráid Dúbailt Aitheantais Fhostaithe'; CRÍOCH CÚRAM

Sa sampla seo, déantar aon earráidí a tharlaíonn a thuairisciú don úsáideoir araon a dhéanann an t-ordú agus an seoladh r-phoist hr@foo.com araon. Is cosúil thíos an earráid a thaispeántar don úsáideoir:

Earráid: Sárú srian 'PK_employee_id' a shárú. Ní féidir leis an eochair dhúbailt a chur isteach sa 'dbo.employees' réad. Mail chuaigh.

Níos tábhachtaí fós, leanann forghníomhú iarratais de ghnáth, ag ligean don ríomhchláraitheoir an earráid a láimhseáil go grinn. Úsáid an TRY ... Is bealach galánta é ráiteas CATCH chun earráidí a tharlaíonn go gníomhach i mbunachar sonraí SQL Server a bhrath agus a láimhseáil.

Ag Foghlaim Níos Mó

Más mian leat tuilleadh eolais a fháil faoin Teanga Iarratas Struchtúrtha, léigh Réamhrá chuig SQL .