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
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта