Cómo utilizar las áreas de diagnóstico sql

A pesar de que SQLSTATE le puede dar alguna información acerca de por qué una declaración particular no, la información es bastante breve. Así SQL proporciona para la captura y retención de información de estado adicional en las áreas de diagnóstico.

La información de estado adicional en un área de diagnóstico puede ser particularmente útil en los casos en que la ejecución de una única sentencia SQL genera múltiples advertencias seguido de un error. SQLSTATE reporta la ocurrencia de un solo error, pero el área de diagnóstico tiene la capacidad de informar sobre varios errores.

El área de diagnóstico es una estructura de datos DBMS gestionados que tiene dos componentes:

  • Encabezamiento: La cabecera contiene información general acerca de la última sentencia SQL que se ha ejecutado.

  • área de detalle: El área de detalle contiene información sobre cada código que genera el comunicado.

área de encabezado de diagnóstico

En el conjunto de transacciones declaración, puede especificar TAMAÑO DE DIAGNÓSTICO. los TAMAÑO que se especifica es el número de áreas de detalle asignados para la información de estado. Si no se incluye una TAMAÑO DE DIAGNÓSTICO cláusula en su conjunto de transacciones declaración, el DBMS asigna el número predeterminado de áreas de detalle.

CamposTipo de datos
NÚMEROnumérico exacto con ninguna parte fraccionaria
NÚMERO DE FILASnumérico exacto con ninguna parte fraccionaria
COMMAND_FUNCTIONVARCHAR (Aplicación define máximo
longitud)
COMMAND_FUNCTION_CODEnumérico exacto con ninguna parte fraccionaria
DYNAMIC_FUNCTIONVARCHAR (Aplicación define máximo
longitud)
DYNAMIC_FUNCTION_CODEnumérico exacto con ninguna parte fraccionaria
MÁSnumérico exacto con ninguna parte fraccionaria
TRANSACTIONS_COMMITTEDnumérico exacto con ninguna parte fraccionaria
TRANSACTIONS_ROLLED_BACKnumérico exacto con ninguna parte fraccionaria
TRANSACTION_ACTIVEnumérico exacto con ninguna parte fraccionaria

La siguiente lista se describen estos elementos con más detalle:

  • los NÚMERO campo es el número de áreas de detalle que se han llenado con información de diagnóstico sobre la excepción actual.

  • los NÚMERO DE FILAS campo contiene el número de filas afectadas si la instrucción SQL anterior era una INSERTAR, ACTUALIZAR, o BORRAR.

  • los COMMAND_FUNCTION campo describe la instrucción SQL que se acaba de ejecutar.

  • los COMMAND_FUNCTION_CODE campo indica el número de código para la instrucción SQL que se acaba de ejecutar. Cada función de comando tiene un código numérico asociado.

  • los DYNAMIC_FUNCTION campo contiene la instrucción SQL dinámico.

    Video: Como usar Vick VapoRub e tratar problemas da cabeça aos pés

  • los DYNAMIC_FUNCTION_CODE campo contiene un código numérico que corresponde a la sentencia de SQL dinámico.

    Video: curso de mecánico automotriz - Uso del vernier - clase 3

  • los MÁS campo puede ser o bien una ‘Y’ o un `NORTE`. ‘Y’ indica que hay más registros de estado que el área de detalle pueden sostener. `NORTE` indica que todos los registros de estado que genera están presentes en el área de detalle. Dependiendo de su aplicación, puede ser capaz de ampliar el número de registros se pueden controlar mediante el uso de la conjunto de transacciones declaración.

    Video: Como utilizar SiSoftware Sandra Pro

  • los TRANSACTIONS_COMMITTED campo contiene el número de transacciones que se han cometido.

    Video: Bloques de datos (DB) Step 7 y TIA Portal

  • los TRANSACTIONS_ROLLED_BACK campo contiene el número de transacciones que se ha revertido.

  • los TRANSACTION_ACTIVE terreno tiene una ‘1’ si una transacción está actualmente activa y una ‘0’ de otra manera. Una transacción se considera que es activo si un cursor está abierta o si el DBMS está esperando un parámetro diferido.

área de detalle de diagnóstico

Las áreas de detalle contienen datos sobre cada error, de aviso o condición individual éxito.

CamposTipo de datos
CONDITION_NUMBERnumérico exacto con ninguna parte fraccionaria
RETURNED_SQLSTATECHAR (6)
MENSAJE DE TEXTOVARCHAR (Aplicación define máximo
longitud)
MESSAGE_LENGTHnumérico exacto con ninguna parte fraccionaria
MESSAGE_OCTET_LENGTHnumérico exacto con ninguna parte fraccionaria
CLASS_ORIGINVARCHAR (Aplicación define máximo
longitud)
SUBCLASS_ORIGINVARCHAR (Aplicación define máximo
longitud)
NOMBRE DE LA CONEXIÓNVARCHAR (Aplicación define máximo
longitud)
NOMBRE DEL SERVIDORVARCHAR (Aplicación define máximo
longitud)
CONSTRAINT_CATALOGVARCHAR (Aplicación define máximo
longitud)
CONSTRAINT_SCHEMAVARCHAR (Aplicación define máximo
longitud)
CONSTRAINT_NAMEVARCHAR (Aplicación define máximo
longitud)
CATALOG_NAMEVARCHAR (Aplicación define máximo
longitud)
NOMBRE_ESQUEMAVARCHAR (Aplicación define máximo
longitud)
NOMBRE DE LA TABLAVARCHAR (Aplicación define máximo
longitud)
COLUMN_NAMEVARCHAR (Aplicación define máximo
longitud)
cursor_nameVARCHAR (Aplicación define máximo
longitud)
CONDITION_IDENTIFIERVARCHAR (Aplicación define máximo
longitud)
PARAMETER_NAMEVARCHAR (Aplicación define máximo
longitud)
PARAMETER_ORDINAL_POSITIONnumérico exacto con ninguna parte fraccionaria
PARAMETER_MODEnumérico exacto con ninguna parte fraccionaria
ROUTINE_CATALOGVARCHAR (Aplicación define máximo
longitud)
ROUTINE_SCHEMAVARCHAR (Aplicación define máximo
longitud)
ROUTINE_NAMEVARCHAR (Aplicación define máximo
longitud)
SPECIFIC_NAMEVARCHAR (Aplicación define máximo
longitud)
TRIGGER_CATALOGVARCHAR (Aplicación define máximo
longitud)
TRIGGER_SCHEMAVARCHAR (Aplicación define máximo
longitud)
trigger_nameVARCHAR (Aplicación define máximo
longitud)

CONDITION_NUMBER tiene el número de secuencia del área de detalle. Si una sentencia genera cinco elementos de estado que se llenan cinco áreas de detalle, las CONDITION_NUMBER por quinta área de detalle es 5. Para recuperar un área de detalles específicos para su examen, utilizar una GET DIAGNOSTICS declaración con la deseada CONDITION_NUMBER. RETURNED_SQLSTATE ostenta la SQLSTATE valor que causó esta área de detalle para ser llenado.

CLASS_ORIGIN le informa que la fuente del valor de código de clase devuelto en SQLSTATE. Si el estándar SQL define el valor, CLASS_ORIGIN es ‘ISO 9075’. Si su aplicación DBMS define el valor, CLASS_ORIGIN posee una cadena que identifica la fuente de su DBMS. SUBCLASS_ORIGIN le informa que la fuente del valor del código de subclase devuelto en SQLSTATE.

CLASS_ORIGIN es importante. Si se obtiene una SQLSTATE de ‘22012’, los valores indican que es en el rango de la norma SQLSTATEs, por lo que saben que significa lo mismo en todas las implementaciones de SQL.

Sin embargo, si el SQLSTATE es ‘22500’, los dos primeros caracteres están en el rango normal e indican una excepción de los datos, pero los tres últimos caracteres están en el rango definido por la implementación. Y si SQLSTATE es ‘90001’, que es completamente en el rango definido por la implementación. SQLSTATE valores en el rango definido por la implementación puede significar cosas diferentes en diferentes implementaciones, a pesar de que el propio código puede ser el mismo.

Así que, ¿cómo encontrar el significado detallado de ‘22500’ o el significado de ‘90001’? Debe buscar en la documentación del implementador. ¿Qué implementador?

Para determinar cuál de ellas produce la condición de error, mira CLASS_ORIGIN y SUBCLASS_ORIGIN: Tienen valores que identifican a cada aplicación. Puede probar la CLASS_ORIGIN y SUBCLASS_ORIGIN para ver si se identifican los ejecutores para los que tiene la SQLSTATE anuncios. Los valores reales colocados en CLASS_ORIGIN y SUBCLASS_ORIGIN son-implementador definido, sino que también se espera que sean fáciles de entender los nombres de empresas.

Si el error reportado es una violación de restricción, la CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, y CONSTRAINT_NAME identificar la restricción siendo violado.

Artículos Relacionados