Безопасная разработка на SQL Используйте try catch для отлова ошибок. Общий шаблон: begin try select 6/0 end try begin catch exec [dbo].[as_error] @str = My message end catch Функция as_error логирует ошибку в as_trac...

SQL. Безопасная разработка на MS SQL (try catch)

Время чтения - менее одной минутыДата публикации 19.02.2020 (обновлено 03.12.2025)

Безопасная разработка на SQL

Используйте try catch для отлова ошибок. Общий шаблон:

begin try
    select 6/0
end try
begin catch
    exec [dbo].[as_error] @str = 'My message'
end catch

Функция as_error логирует ошибку в as_trace (и она выводится на дашборде Админа). Помимо сообщения в ней выводятся системные данные об ошибке - строка, процедура, код ошибки

Локализация места где было исключение

Если в процедуре есть множество вызовов функций и sql процедур, то можно найти хранимую процедуру, в которой было исключение (для функций это не работает). 

BEGIN TRY
    exec dbo.p3
  --select dbo.f3('')
END TRY
BEGIN CATCH
      SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage;
END CATCH;

В примере в p3 вызывается процедура p2, а в p2 вызывается p1, где идет ошибка деления на 0. 

Если сделать аналогично для функий, то в catch мы не сможем получить ту функцию, в которой непосредственно происходит ошибка.

Насколько полезной была статья?

Что еще посмотреть по SQL Server

Ищем партнеров-разработчиков на T-SQL и PL/pgSQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML

Falcon Space - платформа для создания сайтов с личными кабинетами

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK