A Guide-Step-by-Step Guide kuUsing TRY ... CATCH yekubata SQL Server Zvitadzo

Ziva zvikanganiso pasina kupopotera kuurayiwa

I TRY ... Chirevo cheCATCH mu Transact- SQL chinocherechedza uye chinogadzirisa zvikanganiso zvayo mumashandisi ako e database. Iyi nheyo ndiro dombo rekona reSQL Server kutadza kukanganisa uye chikamu chakakosha chekuwedzera maitiro ekugadzira mabhuku. Edza ... CATCH inoshanda kuSQL Server kubva muna 2008, Azure SQL Database, Azure SQL Data Warehouse uye Parallel Data Warehouse.

Kuzivisa TRY..CATCH

Edza ... CATCH inoshanda nekukubvumira kuti utaure zvirevo zviviri zveTransact-SQL: imwe yaunoda "kuedza" uye imwe yekushandisa "kubata" chero zvikanganiso zvingasimuka. Apo SQL Server inosangana ne TRY ... CATCH statement, inokurumidza kupupurira chirevo chinowanikwa mu TRY clause. Kana izwi re TRY richiita zvakanaka, SQL Server rinongoramba richienderera mberi. Zvisinei, kana mutauro we TRY unotadza kukanganisa, SQL Server inoshandisa chirevo cheCATCH kuti ishande zvakanaka nemhosva yacho.

Izwi rechirevo chekutanga rinotora fomu iyi:

TANGA KUITA {sql_statement | statement_block} PEDZERA IVA BEGIN CATCH [{sql_statement | statement_block}] END CATCH [; ]

Edza ... CATCH Muenzaniso

Zviri nyore kunzwisisa kushandiswa kwemashoko aya kuburikidza nekushandiswa kwemuenzaniso. Fungidzira kuti iwe ndiwe mutungamiri wesangano revanhu rekushandisa rine tafura inonzi "Vashandi," ine ruzivo pamusoro peumwe wevashandi vari musangano renyu. Tafura iyo inoshandisa nhamba yevashandi nhamba yeAzisi sechinhu chikuru . Iwe unogona kuedza kushandisa mazwi ari pasi apa kuti uise mushandi mushandi mu database yako:

BATSIRA MUVASHANDI (id, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201)

Pasi pemamiriro ezvinhu akadai, chirevo ichi chingawedzera mutsara kune tafura yeVashandi. Zvisinei, kana mushandi ane ID-12497 atove aripo mune dhesi, kuisa mutsetse kunokanganisa chinetso chekutanga chekutanga uye kuunza mhosho inotevera:

Msg 2627, Nhamba 14, Hurumende 1, Mutsara 1 Chisimba chePRIMARY KEY chisungo 'PK_employee_id'. Haikwanisi kuisa kabhidziro kiyi pane chimwe chinhu 'dbo.employees'. Mashoko aya akagumiswa.

Kunyange zvazvo iko kukanganisa uku kukupa iwe ruzivo rwaunoda kuti uchinetse dambudziko racho, pane nyaya mbiri nayo. Kutanga, shoko racho rakanyarara. Inosanganisira mapurogiramu asina kukodzera, nhamba dzomuguta uye mamwe mashoko asinganzwisisiki kumushandisi wevashandi. Chechipiri, uye zvinonyanya kukosha, inokonzera kuti chirevo chacho chibvise uye chinogona kukonzera kushandira kwekushanda.

Izvo zvinoreva kuputira chirevo mu TRY ... CATCH statement, sezvinoratidzwa pasi apa:

TANGA WADZIDZA KUVARIRA VAKARIDZI (id, kutanga_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201) PEDZA UYE TANGA KUTI TARIDZA 'Mhosva:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Employee Mail', @recipients = 'hr@foo.com', @body = 'Pane kukanganisa kwakaitika kugadzira mushandi mushandi wekare.', @subject = 'Kudzokorora Dhiyabhorosi Dhiyabhorosi'; PEDZERA KUTA

Mumuenzaniso uyu, chero zvikanganiso zvinoitika zvinoratidzwa kune vose vari kushandisa mutemo uye kero ye hr@foo.com e-mail. Iko kukanganisa kwakaratidzwa kumushandisi kunooneka pasi apa:

Kukanganisa: Kusvibiswa kwePRIMARY KEY chisungo 'PK_employee_id'. Haikwanisi kuisa kabhidziro kiyi pane chimwe chinhu 'dbo.employees'. Mirasi yakasimudzwa.

Chinonyanya kukosha, kushanda kwekushanda kunoenderera mberi nguva dzose, zvichibvumira mugadziri kuti aite zvakanaka nekukanganisa. Kushandisa TRY ... CATCH chirevo inzira inoshamisa yekuona nekubata zvikanganiso zvinowanikwa muzvidzidzo zveSquL Server database.

Kudzidza Zvimwe

Kana uchida kudzidza zvakawanda pamusoro peShoko Rakagadzirirwa Mutauro, verenga Sumo yeSQL .