Compartir por


Reglas de control de diagnóstico

Las siguientes reglas rigen el manejo de diagnósticos en SQLGetDiagRec y SQLGetDiagField.

Para todos los componentes ODBC:

  • No deben reemplazar, alterar o enmascarar errores o advertencias recibidos de otro componente ODBC.

  • Pueden agregar un registro de estado adicional cuando reciben un mensaje de diagnóstico de otro componente ODBC. El registro agregado debe agregar un valor de información real al mensaje original.

Para el componente ODBC que interconecta directamente un origen de datos:

  • Debe anteponer su identificador de proveedor, su identificador de componente y el identificador del origen de datos al mensaje de diagnóstico que recibe del origen de datos.

  • Debe conservar el código de error nativo del origen de datos.

  • Debe conservar el mensaje de diagnóstico del origen de datos.

Para cualquier componente ODBC que genere un error o advertencia independiente del origen de datos:

  • Debe proporcionar el SQLSTATE correcto para el error o la advertencia.

  • Debe generar el texto del mensaje de diagnóstico.

  • Debe anteponer su identificador de proveedor y su identificador de componente al mensaje de diagnóstico.

  • Debe devolver un código de error nativo, si está disponible y es significativo.

Para el componente ODBC que interactúa con el Administrador de controladores:

  • Debe inicializar los argumentos de salida de SQLGetDiagRec y SQLGetDiagField.

  • Debe formatear y devolver la información de diagnóstico como argumentos de salida de SQLGetDiagRec y SQLGetDiagField cuando se llama a esa función.

Para un componente ODBC que no sea el Administrador de controladores:

  • Debe establecer el SQLSTATE basado en el error nativo. Para controladores basados en archivos y controladores basados en DBMS que no usan una puerta de enlace, el controlador debe establecer el SQLSTATE. Para controladores basados en DBMS que usan una puerta de enlace, tanto el controlador como una puerta de enlace que soporte ODBC pueden establecer el SQLSTATE.