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

Время чтения - 1 мин.Дата публикации 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

Как форматировать код sql в sql server management studio

Как искать зависимости объектов в SQL Server

Как кешировать в SQL результаты сложных операций

SQL Server. Как вызвать процедуру с переменным именем и результаты вставить в таблицу

Формирование сложного JSON объекта через SELECT в SQL Server

Как вставить данные в таблицу БД из таблицы на другом сервере

Использование CPU в SQL Server Express Edition

Альтернатива множественному Replace

Разбор строки на части и занесение в табличную переменную

SQL. Быстрый поиск хранимых процедур и таблиц в ManagementStudio

SQL. Безопасное приведение типов

SQL. Создание структуры БД через диаграммы

Дополнительный заработок для разработчиков на T-SQL

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