A Guide Step-by-Step барои дасткашӣ TRY ... КМИР барои идора кардани SQL Server Хато

Хатогиҳо бе шикастани амалро муайян кунед

МУНДАРИҶА ... ТАЪРИҚИ КРКТ дар Transact- SQL шартҳои хатогиро дар аризаҳои пойгоҳи додаҳо мефиристад ва амал мекунад. Ин изҳорот собит мекунад, ки коркарди хатогии SQL Server ва қисми муҳими таҳияи барномаҳои устувори базаи додаҳо мебошад. ДИҚҚАТ дар ҶСК «Системаи сервер» оғоз меёбад, ки дар соли 2008 оғоз ёфтааст, пойгоҳи додаи Azure SQL, анбори маълумотҳои Azure SQL ва Анбори иттилооти параллелӣ.

Тафсири TL

ИНТЕРНЕТ ба шумо имкон медиҳад, ки шумо ду изҳороти Transact-SQL-ро тасҳеҳ кунед: яке аз он, ки шумо мехоҳед «кӯшиш кунед» ва дигареро истифода баред, ки ҳар гуна хатогиҳое, ки метавонанд пайдо шаванд. Вақте ки SQL Server дар якҷоягӣ бо TRY ҷамъ меорад .... Агар эъломияи СМТ бомуваффақият иҷро карда шавад, SQL Server танҳо ҳаракат мекунад. Бо вуҷуди ин, агар эъломияи СМТ як хатогиеро эҷод кунад, SQL Server ба таври кофӣ хатогиҳоро хатт мекунад.

Дар ин формат ин формаро мегирад:

{$ S} {{sql_statement | statement_block} ҲАМЧУНИН ДАР БОЗОРИ МЕҲНАТ {{sql_statement | statement_block}] ИНТИХОБОТ [; ]

ДИҚҚАТ!

Ин ба осонтар фаҳмидани истифодаи ин изҳорот тавассути истифодаи намуна аст. Тасаввур кунед, ки шумо идоракунандаи пойгоҳи захиравии инсонӣ ҳастед, ки дорои мизоҷе ном дорад, ки "Кормандон" ҳастанд, ки дорои маълумот дар бораи ҳар як корманд дар ташкилоти шумо мебошанд. Ин ҷадвал рақами аслии коргарро ҳамчун калиди ибтидоӣ истифода мебарад. Шумо метавонед кӯшиш кунед, ки ба зергурӯҳҳои зерин дохил шавед:

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

Дар ҳолатҳои муқаррарӣ, ин изҳорот ба сатри кормандон як қатор илова карда мешавад. Бо вуҷуди ин, агар коргар бо ID 12497 аллакай дар базаи маълумотҳо мавҷуд аст, ворид намудани сатр маҷрои асосии калидиро вайрон мекунад ва боиси хатогиҳои зерин мегардад:

MsG 2627, Level 14, Давлати 1, Қадами 1 Вайрон кардани калимаи PRIMARY Key 'PK_employee_id'. Тугмаҳои такрорӣ дар объектҳои "dbo.employees" дохил карда наметавонанд. Изҳорот қатъ карда шуд.

Ҳангоме ки ин хатогӣ шуморо бо маълумоти ба шумо лозим аст, ки мушкилоти ҳалли худро талаб кунад, ду масъала бо он вуҷуд доранд. Аввалан, паёми таблиғотӣ аст. Он кодексҳои хато, рақами сатр ва дигар иттилоотро, ки ба ҳисоби миёна истифода намешаванд, дар бар мегирад. Дуюм, ва муҳимтар аз он, ин изҳоротро барои бекор кардан ва метавонад ба садамаҳои корӣ оварда расонад.

Алтернативӣ ин аст, ки ҳисобро дар як доллари ...

МУНОСИБАТ НАМУДАНИ ИНТЕРНЕТ БА ТАҲСИЛОТИ ИНТИХОБОТ (ID, first_name, last_name, extension) VALUES (12497, 'Mike', 'Chapple', 4201). EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Почтаи коргарӣ', @recipients = 'hr@foo.com', @body = 'Хатогӣ ба вуҷуд омад, ки сабти нав барои коргарони нав пайдо шуд.', @subject = 'Нусхаи коргарии такрорӣ'; END CATCH

Дар ин мисол, ҳар гуна хатоҳое, ки рӯй медиҳанд, ба ҳар як корбар иҷро кардани фармони ва соати почтаи электронии hr@foo.com мебошанд. Хатогие, ки ба истифодабаранда нишон дода шудааст, дар поён оварда мешавад:

Хато: Бифиристии калидҳои PRIMARY Key 'PK_employee_id'. Тугмаҳои такрорӣ дар объектҳои "dbo.employees" дохил карда наметавонанд. Почтаи гурӯҳӣ.

Муҳимтар аз ҳама, иҷрои иҷрошаванда одатан идома дорад, барномасозон ба таври ҷиддӣ ба хатогӣ роҳ медиҳанд. Истифодаи ТАК ... Тафсилоти CATCH тарзи зебо барои пешгирӣ ва ошкор кардани хатогиҳое, ки дар SQL Server-и барномаҳои пойгоҳи додаҳо рух медиҳанд.

More омӯзиш

Агар шумо хоҳед, ки дар бораи забони Системаи дархостшудаи забонро бештар фаҳмед, хонед.