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 |
---|---|
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. |
|
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. |
|
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. |
|
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. |
|
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 (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. |
|
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. |