Controlar errores y mensajes

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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 alcanzó el final del conjunto de resultados (SQL_NO_DATA), si se devolvieron mensajes informativos (SQL_SUCCESS_WITH_INFO) o si se produjo un error (SQL_ERROR).

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

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 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 del 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 SQL Server Native Client detecta mensajes que vuelven de SQL Server, establece el código de retorno ODBC en SQL_SUCCESS_WITH_INFO o SQL_ERROR y devuelve el mensaje como uno o varios registros de diagnóstico. Por lo tanto, una aplicación ODBC debe probar cuidadosamente estos códigos de retorno y llamar a SQLGetDiagRec para recuperar los datos del mensaje.

Para obtener información sobre cómo realizar un seguimiento de los errores, vea Data Access Tracing (Seguimiento de acceso a datos). Para información sobre las mejoras en el seguimiento de errores agregadas en SQL Server 2012 (11.x), consulte Acceso a información de diagnóstico en el registro de eventos extendidos.

En esta sección

Consulte también

SQL Server Native Client (ODBC)