A Lengkah-Ku-Lengkah Guide toUsing Coba ... nyekel pikeun nanganan SQL Server Kasalahan

Identipikasi kasalahan tanpa interrupting palaksanaan

Pernyataan Coba ... nyekel dina Transact- SQL ngadeteksi na handles kaayaan kasalahan dina aplikasi databés anjeun. pernyataan ieu téh cornerstone of SQL Server kasalahan penanganan sarta mangrupakeun bagian penting tina ngamekarkeun aplikasi database mantap. Coba ... nyekel manglaku ka SQL Server dimimitian ku 2008, Azure SQL databés, Azure SQL Gudang Data tur Gudang Data Parallel.

ngawanohkeun TRY..CATCH

Coba ... karya nyekel ku ngamungkinkeun Anjeun pikeun nangtukeun dua pernyataan Transact-SQL: salah nu rék "coba" na sejen migunakeun ka "nyekel" naon kasalahan anu bisa timbul. Nalika SQL Server encounters pernyataan Coba ... nyekel, langsung executes pernyataan kaasup dina klausa coba. Mun pernyataan coba executes hasil, SQL Server saukur ngalir dina. Sanajan kitu, lamun pernyataan coba dibangkitkeun kasalahan, SQL Server executes pernyataan nyekel kana gracefully nanganan kasalahan.

The rumpaka dasar nyokot formulir ieu:

Ngawitan nyobian {sql_statement | statement_block} TAMAT coba dimimitian nyekel [{sql_statement | statement_block}] TAMAT nyekel [; ]

Coba ... nyekel Conto

Ieu panggampangna pikeun ngarti pamakéan pernyataan ieu ngaliwatan pamakéan conto. Ngabayangkeun nu aya administrator tina database SDM nu ngandung hiji méja ngaranna "pagawé," ngandung émbaran ngeunaan unggal pagawé dina organisasi Anjeun. Méja anu ngagunakeun hiji angka ID pagawe integer salaku konci primér . Anjeun bisa nyobian nganggo pernyataan nu di handap pikeun nyelapkeun pagawe anyar kana databés anjeun:

Ngalebetkeun kana karyawan (id, first_name, last_name, extension) nilai (12497, 'Mike', 'Chapple', 4201)

Dina kaayaan normal, pernyataan ieu bakal nambahan sakaligus kana méja pagawé. Sanajan kitu, lamun hiji pagawe kalayan ID 12497 geus nyampak di Cikajang, inserting baris bakal ngalanggar Konstrain konci primér sarta hasil dina kasalahan handap:

Msg 2627, Level 14, Propinsi 1, Jalur 1 palanggaran primér konci Konstrain 'PK_employee_id'. teu tiasa ngalebetkeun duplikat konci dina obyek 'dbo.employees'. pernyataan geus terminated.

Bari kasalahan ieu nyadiakeun anjeun jeung inpo nu peryogi troubleshoot masalah, aya dua isu jeung eta. Kahiji, suratna aya cryptic. Ieu ngawengku Konci kasalahan, angka garis sareng inpo sejenna unintelligible ka pamaké rata. Kaduana, tur leuwih importantly, eta ngabalukarkeun pernyataan kana abort tur bisa ngakibatkeun hiji kacilakaan aplikasi.

alternatif nya éta mungkus pernyataan dina hiji pernyataan Coba ... nyekel, sakumaha ditémbongkeun di handap:

Ngawitan nyobian ngalebetkeun kana karyawan (id, first_name, last_name, extension) nilai (12497, 'Mike', 'Chapple', 4201) TAMAT coba dimimitian nyekel print 'Kasalahan:' + ERROR_MESSAGE (); EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Surat pagawe', @recipients = 'hr@foo.com', @body = 'kasalahan nyieun rékaman pagawe anyar.', @subject = 'pagawe ID duplikasi Kasalahan'; TAMAT nyekel

Dina conto ieu, sagala kasalahan anu lumangsung aya dilaporkeun ka duanana pamaké executing paréntah sarta hr@foo.com alamat e-mail. Kasalahan ditémbongkeun ka pamaké mucunghul handap:

Kasalahan: palanggaran primér konci Konstrain 'PK_employee_id'. teu tiasa ngalebetkeun duplikat konci dina obyek 'dbo.employees'. Surat queued.

Paling importantly, éksekusi aplikasi terus normal, sahingga programmer ka gracefully nanganan kasalahan. Pamakéan nandakeun tina pernyataan Coba ... nyekel mangrupa cara elegan pikeun proactively ngadeteksi jeung nanganan kasalahan anu lumangsung dina aplikasi database SQL Server.

diajar More

Lamun hayang leuwih jéntré ngeunaan terstruktur Basa pamundut, baca Perkenalan mun SQL .