Обработка ошибок компонента Database Engine

Многие ошибки, вызываемые компонентом SQL Server Database Engine, могут быть перехвачены и исправлены программными средствами. Функции обработки ошибок реализованы в языке Transact-SQL и в интерфейсах прикладного программирования (API) для доступа к данным, которые используются приложениями для обращения к данным, хранимым в компоненте Database Engine.

Ошибки, вызываемые компонентом Database Engine, можно обрабатывать на двух уровнях.

  • Ошибки можно обрабатывать в компоненте Database Engine, вводя код обработки ошибок в пакеты Transact-SQL, хранимые процедуры, триггеры или в пользовательские функции.

  • Ошибки могут возвращаться в вызывающее приложение и обрабатываться этим приложением. Каждый из API, используемых приложением для доступа к компоненту Database Engine, наделен механизмами для возвращения сведений об ошибках соответствующему приложению.

Подраздел

Описание

Основные сведения об ошибках компонента Database Engine

Каждая ошибка компонента Database Engine содержит следующие атрибуты: номер ошибки, строку сообщения, уровень серьезности, состояние, имя процедуры и номер строки.

Получение сведений об ошибках в языке Transact-SQL

Код Transact-SQL может извлекать сведения об ошибках с помощью функций ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE и @@ERROR.

TRY...CATCH (Transact-SQL)

Обработка ошибок в коде Transact-SQL выполняется с помощью конструкции TRY…CATCH, аналогично функции обработки исключений в языках Microsoft Visual C++ и Visual C#. Когда ошибка обнаруживается в блоке TRY, элемент управления передается блоку CATCH, где она может быть обработана.

Использование конструкции TRY...CATCH в языке Transact-SQL

Обработка ошибок в коде Transact-SQL выполняется с помощью конструкции TRY…CATCH, аналогично функции обработки исключений в языках Microsoft Visual C++ и Visual C#. Когда ошибка обнаруживается в блоке TRY, элемент управления передается блоку CATCH, где она может быть обработана.

Использование инструкции RAISERROR

Вызывать пользовательские ошибки можно с помощью инструкции RAISERROR. Кроме того, ее можно использовать из блока CATCH для передачи приложению ошибок, обрабатываемых блоком CATCH.

Использование инструкции PRINT

Инструкцию PRINT можно использовать для возвращения приложению пользовательских сообщений.

Использование функции @@ERROR

В более ранних версиях SQL Server функция @@ERROR являлась основным средством выявления ошибок в инструкциях Transact-SQL. Конструкция TRY…CATCH расширяет набор функциональных возможностей.

Обработка ошибок и сообщений в приложениях

Все API доступа к данным, такие как ActiveX Data Objects (ADO), OLE DB и Open Database Connectivity (ODBC), оснащены механизмами извещения приложений обо всех сведениях об ошибках, полученных от компонента Database Engine.

Степени серьезности ошибок компонента Database Engine

Возникают сообщения об ошибках компонента Database Engine и о пользовательских ошибках с серьезностью от 1 до 25. Для формирования сообщений о пользовательских ошибках можно использовать sp_addmessage и RAISERROR.

См. также

Справочник