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 Database Engine (Motor de base de datos).

Los errores de Database Engine (Motor de base de datos) se pueden controlar en dos niveles:

  • En Database Engine (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. Entre los mecanismos de control de errores de Transact-SQL se incluyen la construcción TRY…CATCH (vea TRY...CATCH (Transact-SQL)), la instrucción RAISERROR y la función @@ERROR.
  • 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 Database Engine (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 Database Engine (Motor de base de datos) contiene los siguientes atributos: un número de error, una cadena de mensaje, la gravedad, el estado, el nombre del procedimiento y el 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.

Usar TRY...CATCH en Transact-SQL

SQL Server 2005 incluye la posibilidad de procesar errores en el código de Transact-SQL 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. Éste es el mecanismo principal para el control de errores en SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005).

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 (ActiveX Data Objects, 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 Database Engine (Motor de base de datos).

Niveles de gravedad de error del motor de base de datos

Los errores de Database Engine (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

Otros recursos

sys.messages (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005