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 |
---|---|
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. |
|
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. |
|
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). |
|
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. |
|
Se puede utilizar la instrucción PRINT para devolver mensajes definidos por el usuario a la aplicación. |
|
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. |
|
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). |
|
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. |