Controlar errores del motor de base de datos

Muchos de los errores generados por SQL Server Database Engine (Motor de base de datos de SQL Server) se pueden capturar y resolver mediante programación. El lenguaje Transact-SQL y las interfaces de programación de aplicaciones (API) de acceso a datos proporcionan funciones de control de errores que las aplicaciones utilizan para obtener acceso a datos almacenados en Motor de base de datos.

Los errores de Motor de base de datos se pueden controlar en dos niveles:

  • En Motor de base de datos se pueden controlar errores si se agrega código de control de errores a lotes, procedimientos almacenados, desencadenadores o funciones definidas por el usuario de Transact-SQL.

  • Los errores se pueden devolver a la aplicación que llama y controlarse en el código de la aplicación. Cada una de las API que las aplicaciones utilizan para obtener acceso a Motor de base de datos ofrecen mecanismos para pasar de nuevo la información de errores a la aplicación.

Tema

Descripción

Descripción de errores del motor de base de datos

Cada error de Motor de base de datos contiene los atributos siguientes: un número de error, una cadena del mensaje, gravedad, estado, nombre de procedimiento y número de línea.

Recuperar información de errores en Transact-SQL

El código de Transact-SQL puede recuperar información sobre errores mediante las funciones ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE y @@ERROR.

TRY...CATCH (Transact-SQL)

Los errores en el código de Transact-SQL se pueden procesar mediante una construcción TRY…CATCH similar a las características de control de excepciones de los lenguajes Microsoft Visual C++ y Visual C#. Cuando se detecta una condición de error en un bloque TRY, el control pasa al bloque CATCH en donde puede procesarse.

Usar TRY...CATCH en Transact-SQL

Los errores en el código de Transact-SQL se pueden procesar mediante una construcción TRY…CATCH similar a las características de control de excepciones de los lenguajes Microsoft Visual C++ y Visual C#. Cuando se detecta una condición de error en un bloque TRY, el control pasa al bloque CATCH en donde puede procesarse.

Usar RAISERROR

Se puede utilizar la instrucción RAISERROR para generar errores definidos por el usuario. También puede utilizarse desde un bloque CATCH para pasar a la aplicación los errores procesados en el bloque CATCH.

Usar PRINT

Se puede utilizar la instrucción PRINT para devolver mensajes definidos por el usuario a la aplicación.

Usar @@ERROR

En versiones anteriores de SQL Server, la función @@ERROR era el medio principal para detectar errores en instrucciones de Transact-SQL. Las construcciones TRY…CATCH proporcionan una funcionalidad mejorada.

Controlar errores y mensajes en las aplicaciones

Cada una de las API de acceso a datos, como ADO (Objetos de datos ActiveX), OLE DB y ODBC (Open Database Connectivity, Conectividad abierta de bases de datos), cuentan con mecanismos para notificar a la aplicación cualquier información de error recibida de Motor de base de datos.

Niveles de gravedad de error del motor de base de datos

Los errores de Motor de base de datos y los mensajes de error definidos por el usuario se provocan con un índice de gravedad de 1 a 25. sp_addmessage y RAISERROR se pueden usar para generar mensajes de error definidos por el usuario.

Vea también

Referencia