Бир этап-этабы менен жетекчилик toUsing КӨРГҮЛӨ ... Catch SQL Server Errors аткарганды

аткарууну бөлбөй каталарды аныктоо

TRY ... Transact- сойлейтиндер билдирүү SQL аныктаганда жана маалымат базасын колдонуу боюнча ката шарттарды карайт. Бул билдирүү SQL Server ката менен иштөөнүн негизи болуп саналат жана бекем базасы тиркемелерди иштеп чыгуу маанилүү бөлүгү болуп саналат. КОЛДОНУП КӨРГҮЛӨ: 2008-жылдан баштап кармап SQL Server тиешелүү ..., Берилл SQL базасы, Берилл SQL маалыматтар, склад жана параллелдүү маалыматтар склад.

киргизүү TRY..CATCH

КОЛДОНУП КӨРГҮЛӨ ... Catch иштерди эки Transact-SQL сөздөрдү көрсөтүүгө уруксат берүү менен: бири сага, "аракет" келет жана дагы бир "кармоо" пайда болушу мүмкүн болгон бардык каталарды пайдалануу. SQL Server бир TRY ... Catch сөздөрдү туш келгенде, ал ошол замат TRY пунктунда камтылган арызды карайт. TRY билдирүү ийгиликтүү ишке болсо, SQL Server жөн гана өтүп баратып. Бирок, TRY билдирүүдө ката пайда болсо, SQL Server сылык ката чече Catch арызды карайт.

негизги синтаксиси мындай айтылат:

Аракет БАШТАЛАТ {sql_statement | statement_block} END Catch [{sql_statement БАШТАЛАТ КӨРГҮЛӨ: | statement_block}] END Catch [; ]

КОЛДОНУП КӨРГҮЛӨ ... Catch үлгүсү

Бул, мисалы, колдонуу аркылуу бул арызды колдонууну түшүнүү үчүн жөнөкөй эмес. Сиз "кызматкерлери," ар бир кызматкерлердин сиздин уюм жөнүндө маалыматты камтыган аталган үстөл бар адам ресурстарын маалыматтар базасынын администратору болуп дейли. Бул стол болуп бүтүн кызматкери ID санын колдонгон негизги ачкыч . Сиз базасына бир жаңы кызматкерди киргизүү үчүн төмөнкү сөздөрдү колдонуу үчүн аракет кылышы мүмкүн:

кызматкерлердин Жарчысы (ID, first_name, last_name, узартуу) БААЛУУЛУКТАРДЫН (12497, "Майк ',' Chapple", 4201)

Кадимки шарттарда, бул билдирүү кызматкерлери столго бир сапты кошуу болмок. Бирок, ID 12497 менен кызматкер буга чейин эле маалымат базасы бар болсо, Сапты киргизүүдө негизги ачкыч чектеме бузган жана төмөнкү ката алып келет:

Кабар 2627, Даража 14, мамлекеттик 1-Line 1 башкы ачкыч чектөө бузуу "PK_employee_id". объект "dbo.employees" боюнча кайталанма ачкычты киргизүүгө мүмкүн эмес. Арыз токтотулду.

Бул ката маселени чечүү үчүн зарыл маалымат менен камсыз кылат, ал эми аны менен кошо эки маселе бар. Биринчиден, кабар сырдуу болуп саналат. Бул орто эсеп менен пайдалануучу үчүн купуя ката коддору, катардагы сандар жана башка маалыматтарды камтыйт. Экинчиден, андан да маанилүүсү, аны алдырып арызды себеп жана арыз кыйроону алып келиши ыктымал.

альтернатива төмөндө көрсөтүлгөндөй, TRY ... балык билдирүүсүндө арызды, ороп болуп саналат:

кызматкерлердин ТИЛИНЕ TRY кыстар БАШТАЛАТ (ID, first_name, last_name, узартуу) БААЛУУЛУКТАР (12497, "Майк ',' Chapple", 4201) Catch PRINT БАШТАЛАТ КӨРГҮЛӨ END "Error:" + ERROR_MESSAGE (); Exec msdb.dbo.sp_send_dbmail @profile_name = 'жумушчу Mail ", @recipients =' hr@foo.com ', @body =' Ката бир жаңы кызматкер рекорд жаратып кетти. ', @subject =' жумушчу ID көбөйүшү ката '; END Catch

Бул мисалда, пайда кайсы бир каталыктар жөнүндө буйрук аткаруучу пайдалануучу жана hr@foo.com электрондук почта дарегин да билдирилди. колдонуучуга көрсөтүлө ката төмөндө көрүнөт:

Ката: башкы ачкыч чектөө бузуу "PK_employee_id". объект "dbo.employees" боюнча кайталанма ачкычты киргизүүгө мүмкүн эмес. Mail баштады.

Баарынан маанилүүсү, арыз аткаруу программист сылык ката туура жол, кадимкидей уланууда. TRY ... Catch арыздын колдонуу көбүрөөк аныктоо жана SQL Server базасы арыздарды пайда каталарды чечүү үчүн тиреген жолу болуп саналат.

үйрөнүү More

Сиз структураланган талптар тили тууралуу көбүрөөк билүү үчүн келсе, окуп SQL киришүү .