Controlar errores y mensajes

Cuando una aplicación llama a una función ODBC, el controlador ejecuta la función y devuelve información de diagnóstico de dos maneras: un código de retorno indica si la función ODBC se ha ejecutado o no correctamente en su totalidad, y los registros de diagnóstico proporcionan información detallada sobre la función. Los registros de diagnóstico incluyen un registro de encabezado y registros de estado. Por lo menos se devuelve un registro de diagnóstico, el registro de encabezado, aunque la función se ejecute correctamente.

La información de diagnóstico se usa en la fase de desarrollo para detectar errores de programación, como identificadores no válidos y errores de sintaxis en instrucciones SQL codificadas de forma rígida. También se utiliza en tiempo de ejecución para detectar errores y advertencias durante la ejecución, como truncamiento de datos, infracciones de reglas y errores de sintaxis en instrucciones SQL escritas por el usuario. La lógica del programa se suele basar en códigos de retorno.

Por ejemplo, después de que una aplicación llame a SQLFetch para recuperar las filas de un conjunto de resultados, el código de retorno indica si se llegó al final del conjunto de resultados (SQL_NO_DATA), si se devolvió algún mensaje informativo (SQL_SUCCESS_WITH_INFO) o si se produjo un error (SQL_ERROR).

Si el controlador ODBC de SQL Server Native Client devuelve algo distinto de SQL_SUCCESS, la aplicación puede llamar a SQLGetDiagRec para recuperar los mensajes informativos o de error. Utilice SQLGetDiagRec para desplazarse hacia arriba y hacia abajo en el conjunto de mensajes si hay más de uno.

El código de retorno SQL_INVALID_HANDLE siempre indica un error de programación y nunca debe encontrarse durante la ejecución. Todos los demás códigos de retorno proporcionan información en tiempo de ejecución, aunque SQL_ERROR puede indicar un error de programación.

La API nativa de Microsoft SQL Server original, DB-Library para C, permite a una aplicación instalar funciones de control de errores de devolución de llamada y de control de mensajes que devuelven errores o mensajes. Algunas instrucciones Transact-SQL, como PRINT, RAISERROR, DBCC y SET, devuelven sus resultados a la función de controlador de mensajes DB-Library en lugar de a un conjunto de resultados. Sin embargo, la API de ODBC no tiene ninguna capacidad de devolución de llamada semejante. Cuando el controlador ODBC de SQL Server Native Client detecta mensajes procedentes de SQL Server, establece el código de retorno de ODBC en SQL_SUCCESS_WITH_INFO o SQL_ERROR y devuelve el mensaje como uno o más registros de diagnóstico. Por lo tanto, una aplicación ODBC debe comprobar cuidadosamente estos códigos de retorno y llamar a SQLGetDiagRec para obtener los datos del mensaje.

Para obtener información sobre cómo realizar un seguimiento de los errores, vea el documento sobre seguimiento de acceso a datos. Para obtener información sobre las mejoras relativas al seguimiento de errores que se han agregado a SQL Server 2012, vea Obtener acceso a información de diagnóstico en el registro de eventos extendidos.

En esta sección

Vea también

Conceptos

SQL Server Native Client (ODBC)