ADC

Expresiones de directiva avanzadas: DataStream

La infraestructura de directivas del dispositivo NetScaler incluye expresiones que puede utilizar para evaluar y procesar el tráfico del servidor de bases de datos cuando el dispositivo se implementa entre un conjunto de servidores de aplicaciones y sus servidores de bases de datos asociados.

Este tema incluye las siguientes secciones:

  • Expresiones para el protocolo MySQL
  • Expresiones para evaluar las conexiones de Microsoft SQL Server

Expresiones para el protocolo MySQL

Las siguientes expresiones evalúan el tráfico asociado a los servidores de bases de datos MySQL. Puede utilizar las expresiones basadas en solicitudes (expresiones que comienzan por MYSQL.CLIENT y MYSQL.REQ) en las directivas para tomar decisiones de cambio de solicitudes en el punto de enlace del servidor virtual de conmutación de contenido y las expresiones basadas en respuestas (expresiones que comienzan por MYSQL.RES) para evaluar las respuestas del servidor a los monitores de estado configurados por el usuario.

  • MYSQL.CLIENT. Funciona en las propiedades del cliente de una conexión MySQL.

  • MYSQL.CLIENT.CAPABILITIES. Devuelve el conjunto de indicadores que el cliente estableció en el campo de capacidades del paquete de inicialización del protocolo de enlace durante la autenticación. Algunos ejemplos de los indicadores que están configurados son CLIENT_FOUND_ROWS, CLIENT_COMPRESS y CLIENT_SSL.

  • MYSQL.CLIENT.CHAR_SET. Devuelve la constante de enumeración asignada al conjunto de caracteres que utiliza el cliente. Los operadores EQ(<m>) y NE(<m>), que devuelven valores booleanos para indicar el resultado de una comparación, se utilizan con este prefijo. A continuación se muestran las constantes de enumeración de conjuntos de caracteres:

    • LATIN2_CZECH_CS
    • DEC8_SWEDISH_CI
    • CP850_GENERAL_CI
    • GREEK_GENERAL_CI
    • LATIN1_GERMAN1_CI
    • HP8_ENGLISH_CI
    • KOI8R_GENERAL_CI
    • LATIN1_SWEDISH_CI
    • LATIN2_GENERAL_CI
    • SWE7_SWEDISH_CI
    • ASCII_GENERAL_CI
    • CP1251_BULGARIAN_CI
    • LATIN1_DANISH_CI
    • HEBREO_GENERAL_CI
    • LATIN7_ESTONIAN_CS
    • LATIN2_HUNGARIAN_CI
    • KOI8U_GENERAL_CI
    • CP1251_UCRANIAN_CI
    • CP1250_GENERAL_CI
    • LATIN2_CROATIAN_CI
    • CP1257_LITHUANIAN_CI
    • LATIN5_TURKISH_CI
    • LATIN1_GERMAN2_CI
    • ARMSCII8_GENERAL_CI
    • UTF8_GENERAL_CI
    • CP1250_CHECO_CS
    • CP866_GENERAL_CI
    • KEYBCS2_GENERAL_CI
    • MACCE_GENERAL_CI
    • MACROMAN_GENERAL_CI
    • CP852_GENERAL_CI
    • LATIN7_GENERAL_CI
    • LATIN7_GENERAL_CS
    • MACCE_BIN
    • CP1250_CROACIAN_CI
    • LATIN1_BIN
    • LATIN1_GENERAL_CI
    • LATIN1_GENERAL_CS
    • CP1251_BIN
    • CP1251_GENERAL_CI
    • CP1251_GENERAL_CS
    • MACROMAN_BIN
    • CP1256_GENERAL_CI
    • CP1257_BIN
    • CP1257_GENERAL_CI
    • ARMSCII8_BIN
    • ASCII_BIN
    • CP1250_BIN
    • CP1256_BIN
    • CP866_BIN
    • DEC8_BIN
    • GREEK_BIN
    • HEBREO_BIN
    • HP8_BIN
    • CLAVE BCS2_BIN
    • KOI8R_BIN
    • KOI8U_BIN
    • LATIN2_BIN
    • LATIN5_BIN
    • LATIN7_BIN
    • CP850_BIN
    • CP852_BIN
    • SWE7_BIN
    • UTF8_BIN
    • GEOSTD8_GENERAL_CI
    • GEOSTD8_BIN
    • LATIN1_SPANISH_CI
    • UTF8_UNICODE_CI
    • UTF8_ICELANDIC_CI
    • UTF8_LETÓN_CI
    • UTF8_RUMANÍA_CI
    • UTF8_SLOVENIAN_CI
    • UTF8_POLISH_CI
    • UTF8_ESTONIAN_CI
    • UTF8_ESPAÑOL_CI
    • UTF8_SUEDISH_CI
    • UTF8_TURKISH_CI
    • UTF8_CZECH_CI
    • UTF8_DANISH_CI
    • UTF8_LITUANO_CI
    • UTF8_SLOVAK_CI
    • UTF8_ESPAÑOL2_CI
    • UTF8_ROMAN_CI
    • UTF8_PERSIAN_CI
    • UTF8_ESPERANTO_CI
    • UTF8_HUNGARIAN_CI
    • CONJUNTO DE CARACTERES INVAL_VÁLIDO
  • MYSQL.CLIENT.DATABASE. Devuelve el nombre de la base de datos especificada en el paquete de autenticación que el cliente envía al servidor de la base de datos. Este es el atributo databasename.

  • MYSQL.CLIENT.USER. Devuelve el nombre de usuario (en el paquete de autenticación) con el que el cliente intenta conectarse a la base de datos. Este es el atributo de usuario.

  • MYSQL.REQ. Funciona con una solicitud de MySQL.

  • MYSQL.REQ.COMMAND. Identifica la constante de enumeración asignada al tipo de comando de la solicitud. Los operadores EQ(<m>) y NE(<m>), que devuelven valores booleanos para indicar el resultado de una comparación, se utilizan con este prefijo. A continuación se muestran los valores de las constantes de enumeración:

    • DORMIR
    • DEJAR
    • INIT_DB
    • CONSULTA
    • LISTA_DE CAMPOS
    • CREAR_DB
    • DROP_DB
    • REFRESCAR
    • APAGAR
    • ESTADÍSTICAS
    • INFORMACIÓN_DEL PROCESO
    • CONECTAR
    • PROCESO_MATAR
    • DEPURACIÓN
    • PING
    • HORA
    • INSERCIÓN_RETRASADA
    • CAMBIAR_USUARIO
    • BINLOG_DUMP
    • TABLE_DUMP
    • CONECT_OUT
    • REGISTER_SLAVE
    • STMT_PREPARE
    • STMT_EXECUTE
    • STMT_SEND_LONG_DATA
    • STMT_CLOSE
    • STMT_RESET
    • CONFIGURAR_OPCIÓN
    • STMT_FETCH
  • MYSQL.REQ.QUERY. Identifica la consulta en la solicitud de MySQL.

  • MYSQL.REQ.QUERY.COMMAND. Devuelve la primera palabra clave de la consulta de MySQL.

  • MYSQL.REQ.QUERY.SIZE. Devuelve el tamaño de la consulta de solicitud en formato entero. El método SIZE es similar al método CONTENT_LENGTH, que devuelve la longitud de una solicitud o respuesta HTTP.

  • MYSQL.REQ.QUERY.TEXT. Devuelve una cadena que cubre toda la consulta.

  • MYSQL.REQ.QUERY.TEXT(<n>). Devuelve los primeros n bytes de la consulta de MySQL en forma de cadena. Esto es similar a HTTP.BODY(<n>).

    Parámetros:

    n - Número de bytes que se devolverán

  • MYSQL.RES. Funciona con una respuesta de MySQL.

  • MYSQL.RES.ATLEAST_ROWS_COUNT(<i>). Comprueba si la respuesta tiene al menos un número de filas y devuelve un booleano VERDADERO o FALSO para indicar el resultado.

    Parámetros:

    i - Número de filas

  • MYSQL.RES.ERROR. Identifica el objeto de error de MySQL. El objeto de error incluye el número de error y el mensaje de error.

  • MYSQL.RES.ERROR.MESSAGE. Devuelve el mensaje de error que se recupera de la respuesta de error del servidor.

  • MYSQL.RES.ERROR.NUM. Devuelve el número de error que se recupera de la respuesta de error del servidor.

  • MYSQL.RES.ERROR.SQLSTATE. Devuelve el valor del campo SQLSTATE en la respuesta de error del servidor. El servidor MySQL traduce los valores de los números de error a valores de SQLSTATE.

  • MYSQL.RES.FIELD(<i>). Identifica el paquete que corresponde a i<sup>th</sup> campo individual en la respuesta del servidor. Cada paquete de campo describe las propiedades de la columna asociada. El recuento de paquetes (i) comienza en 0.

    Parámetros:

    i - Número de paquete

  • MYSQL.RES.FIELD(<i>).CATALOG. Devuelve la propiedad de catálogo del paquete de campo.

  • MYSQL.RES.FIELD(<i>).CHAR_SET. Devuelve el conjunto de caracteres de la columna. Los operadores EQ(<m>) y NE(<m>), que devuelven valores booleanos para indicar el resultado de una comparación, se utilizan con este prefijo.

  • MYSQL.RES.FIELD(<i>).DATATYPE. Devuelve una constante de enumeración que representa el tipo de datos de la columna. Este es el atributo type (también denominado enum_field_type) de la columna. Los operadores EQ(<m>) y NE(<m>), que devuelven valores booleanos para indicar el resultado de una comparación, se utilizan con este prefijo. Los valores posibles para los distintos tipos de datos son:

    • DECIMAL
    • MINÚSCULO
    • CORTO
    • LARGO
    • FLOTAR
    • DOBLE
    • NULO
    • MARCA DE TIEMPO
    • LARGOLARGO
    • INT24
    • FECHA
    • HORA
    • FECHA/HORA
    • AÑO
    • NUEVA FECHA
    • VARCHAR (nuevo en MySQL 5.0)
    • BIT (nuevo en MySQL 5.0)
    • NEWDECIMAL (nuevo en MySQL 5.0)
    • ENUMERACIÓN
    • CONJUNTO
    • MINY_BLOB
    • MEDIUM_BLOB
    • BLOB LARGO
    • MANCHA
    • VAR_STRING
    • CADENA
    • GEOMETRÍA
  • MYSQL.RES.FIELD(<i>).DB. Devuelve el atributo identificador de base de datos (db) del paquete de campo.

  • MYSQL.RES.FIELD(<i>).DECIMALS. Devuelve el número de posiciones después del punto decimal si el tipo es DECIMAL o NUMÉRICO. Este es el atributo de decimales del paquete de campo.

  • MYSQL.RES.FIELD(<i>).FLAGS. Devuelve la propiedad flags del paquete de campo. A continuación se muestran los posibles valores de las banderas hexadecimales:

    • 0001: NOT_NULL_FLAG
    • 0002: PRI_KEY_FLAG
    • 0004: BANDERA_CLAVE ÚNICA
    • 0008: BANDERA_CLAVE MÚLTIPLE
    • 0010: BLOB_FLAG
    • 0020: BANDERA_SIN FIRMAR
    • 0040: BANDER_DE_CERO
    • 0080: BANDERA_BINARIA
    • 0100: ENUM_FLAG
    • 0200: AUTO_INCREMENT_FLAG
    • 0400: TIMESTAM_FLAG
    • 0800: CONFIGURAR_BANDERA
  • MYSQL.RES.FIELD(<i>).LENGTH. Devuelve la longitud de la columna. Este es el valor del atributo de longitud del paquete de campo. El valor que se devuelve puede ser mayor que el valor real. Por ejemplo, una instancia de la columna VARCHAR (2) puede devolver un valor de 2 incluso si contiene solo un carácter.

  • MYSQL.RES.FIELD(<i>).NAME. Devuelve el identificador de la columna (el nombre después de la cláusula AS, si existe). Este es el atributo de nombre del paquete de campo.

  • MYSQL.RES.FIELD(<i>).ORIGINAL_NAME. Devuelve el identificador de columna original (antes de la cláusula AS, si existe). Este es el atributo org_name del paquete de campo.

  • MYSQL.RES.FIELD(<i>).ORIGINAL_TABLE. Devuelve el identificador de tabla original de la columna (antes de la cláusula AS, si existe). Este es el atributo org_table del paquete de campo.

  • MYSQL.RES.FIELD(<i>).TABLE. Devuelve el identificador de la tabla de la columna (después de la cláusula AS, si existe). Este es el atributo de tabla del paquete de campo.

  • MYSQL.RES.FIELDS_COUNT. Devuelve el número de paquetes de campo de la respuesta (el atributo field_count del paquete OK).

  • MYSQL.RES.OK. Identifica el paquete OK enviado por el servidor de base de datos.

  • MYSQL.RES.OK.AFFECTED_ROWS. Devuelve el número de filas afectadas por una consulta INSERT, UPDATE o DELETE. Este es el valor del atributo affected_rows del paquete OK.

  • MYSQL.RES.OK.INSERT_ID. Identifica el atributo unique_id del paquete OK. Si la sentencia o consulta de MySQL actual no genera una identidad de incremento automático, el valor de unique_id y, por lo tanto, el valor devuelto por la expresión, es 0.

  • MYSQL.RES.OK.MESSAGE. Devuelve la propiedad del mensaje del paquete OK.

  • MYSQL.RES.OK.STATUS. Identifica la cadena de bits del atributo server_status del paquete OK. Los clientes pueden usar el estado del servidor para comprobar si el comando actual forma parte de una transacción en ejecución. Los bits de la cadena de bits server_status corresponden a los siguientes campos (en el orden indicado):

    • EN TRANSACCIÓN
    • AUTO_COMMIT
    • MÁS RESULTADOS
    • CONSULTA MÚLTIPLE
    • ÍNDICE INCORRECTO UTILIZADO
    • NO SE HA UTILIZADO NINGÚN ÍNDICE
    • EL CURSOR EXISTE
    • ÚLTIMA FILA VISTA
    • BASE DE DATOS ELIMINADA
    • SIN ESCAPES DE BARRA INVERTIDA
  • MYSQL.RES.OK.WARNING_COUNT. Devuelve el atributo warning_count del paquete OK.

  • MYSQL.RES.ROW(<i>). Identifica el paquete que corresponde a i<sup>th</sup> fila individual de la respuesta del servidor de base de datos.

    Parámetros:

    i - Número de fila

  • MYSQL.RES.ROW(<i>).DOUBLE_ELEM(<j>). Comprueba si la columna j<sup>th</sup> de la fila i<sup>th</sup> fila de la tabla es NULL. Siguiendo las convenciones de C, los índices i y j comienzan desde 0. Por lo tanto, la fila i y la columna j son en realidad la fila (i+1)<sup>th</sup> y la columna (j+1)<sup>th</sup> columna, respectivamente.

    Parámetros:

    i - Número de fila

    j - Número de columna

  • MYSQL.RES.ROW(<i>).IS_NULL_ELEM(j). Comprueba si la columna j<sup>th</sup> de la fila i<sup>th</sup> fila de la tabla es NULL. Siguiendo las convenciones de C, los índices i y j comienzan desde 0. Por lo tanto, la fila i y la columna j son en realidad la fila (i+1)<sup>th</sup> y la columna (j+1)<sup>th</sup> columna, respectivamente.

    Parámetros:

    i - Número de fila

    j - Número de columna

  • MYSQL.RES.ROW(<i>).NUM_ELEM(<j>). Devuelve un valor entero de la columna j<sup>th</sup> de la fila i<sup>th</sup> fila de la mesa. Siguiendo las convenciones de C, los índices i y j comienzan desde 0. Por lo tanto, la fila i y la columna j son en realidad la fila (i+1)<sup>th</sup> y la columna (j+1)<sup>th</sup> columna, respectivamente.

    Parámetros:

    i - Número de fila

    j - Número de columna

  • MYSQL.RES.ROW(<i>).TEXT_ELEM(j). Devuelve una cadena de la columna j<sup>th</sup> de la fila i<sup>th</sup> fila de la mesa. Siguiendo las convenciones de C, los índices i y j comienzan desde 0. Por lo tanto, la fila i y la columna j son en realidad la fila (i+1)<sup>th</sup> y la columna (j+1)<sup>th</sup> columna, respectivamente.

    Parámetros:

    i - Número de fila

    j - Número de columna

  • MYSQL.RES.TYPE. Devuelve una constante de enumeración para el tipo de respuesta. Sus valores pueden ser ERROR, OK y RESULT_SET. Los operadores EQ(<m>) y NE(<m>), que devuelven valores booleanos para indicar el resultado de una comparación, se utilizan con este prefijo.

Expresiones para evaluar las conexiones de Microsoft SQL Server

Las siguientes expresiones evalúan el tráfico asociado a los servidores de bases de datos de Microsoft SQL Server. Puede utilizar las expresiones basadas en solicitudes (expresiones que comienzan por MSSQL.CLIENT y MSSQL.REQ) en las directivas para tomar decisiones de cambio de solicitudes en el punto de enlace del servidor virtual de conmutación de contenido y las expresiones basadas en respuestas (expresiones que comienzan por MSSQL.RES) para evaluar las respuestas del servidor a los monitores de estado configurados por el usuario.

Expresión Descripción
MSSQL.CLIENT.CAPABILITIES Devuelve los campos OptionFlags1, OptionFlags2, OptionFlags3 y TypeFlags del paquete Login7Authentication, en ese orden, como un entero de 4 bytes. Cada campo tiene una longitud de 1 byte y especifica un conjunto de capacidades del cliente.
MSSQL.CLIENT.DATABASE Devuelve el nombre de la base de datos del cliente. El valor devuelto es de tipo texto.
MSSQL.CLIENT.USER Devuelve el nombre de usuario con el que se autenticó el cliente. El valor devuelto es de tipo texto.
MSSQL.REQ.COMMAND Devuelve una constante de enumeración que identifica el tipo de comando de la solicitud enviada a un servidor de base de datos de Microsoft SQL Server. El valor devuelto es de tipo texto. Algunos ejemplos de valores de la constante de enumeración son QUERY, RESPONSE, RPC y ATTENTION. Los operadores EQ() y NE(), que devuelven valores booleanos para indicar el resultado de una comparación, se utilizan con esta expresión.
MSSQL.REQ.QUERY.COMMAND Devuelve la primera palabra clave de la consulta SQL. El valor devuelto es de tipo texto.
MSSQL.REQ.QUERY.SIZE Devuelve el tamaño de la consulta SQL de la solicitud. El valor devuelto es un número.
MSSQL.REQ.QUERY.TEXT Devuelve la consulta SQL completa en forma de cadena. El valor devuelto es de tipo texto.
MSSQL.REQ.QUERY.TEXT() Devuelve los primeros n bytes de la consulta SQL. El valor devuelto es de tipo texto. Parámetros: n - Número de bytes
MSSQL.REQ.RPC.NAME Devuelve el nombre del procedimiento al que se llama en una solicitud de llamada a un procedimiento remoto (RPC). El nombre se devuelve como cadena.
MSSQL.REQ.RPC.IS_PROCID Devuelve un valor booleano que indica si la solicitud de llamada a un procedimiento remoto (RPC) contiene un ID de procedimiento o un nombre de RPC. Un valor devuelto de True indica que la solicitud contiene un ID de procedimiento y un valor devuelto de FALSE indica que la solicitud contiene un nombre de RPC.
MSSQL.REQ.RPC.PROCID Devuelve el ID del procedimiento de la solicitud de llamada a un procedimiento remoto (RPC) como un entero.
MSSQL.REQ.RPC.BODY Nota : No está disponible para versiones anteriores a la 10.1. Devuelve el cuerpo de la solicitud SQL como una cadena en forma de parámetros representados como cláusulas “a=b” separadas por comas, donde “a” es el nombre del parámetro RPC y “b” es su valor.
MSSQL.REQ.RPC.BODY (n) Nota : No está disponible para versiones anteriores a la 10.1. Devuelve parte del cuerpo de la solicitud SQL como una cadena en forma de parámetros representados como cláusulas “a=b” separadas por comas, donde “a” es el nombre del parámetro RPC y “b” es su valor. Los parámetros se devuelven solo desde los primeros “n” bytes de la solicitud, sin incluir el encabezado SQL. Solo se devuelven los pares nombre-valor completos.
MSSQL.RES.ATLEAST_ROWS_COUNT (i) Comprueba si la respuesta tiene al menos un número de filas. El valor devuelto es un valor verdadero o falso booleano. Parámetros: i - Número de filas
MSSQL.RES.DONE.ROWCOUNT Devuelve un recuento del número de filas afectadas por una consulta INSERT, UPDATE o DELETE. El valor devuelto es del tipo unsigned long.
MSSQL.RES.DONE.STATUS Devuelve el campo de estado del token DONE enviado por un servidor de base de datos de Microsoft SQL Server. El valor devuelto es un número.
MSSQL.RES.ERROR.MESSAGE Devuelve el mensaje de error del token ERROR enviado por un servidor de base de datos de Microsoft SQL Server. Este es el valor del campo msgText del token ERROR. El valor devuelto es de tipo texto.
MSSQL.RES.ERROR.NUM Devuelve el número de error del token ERROR enviado por un servidor de base de datos de Microsoft SQL Server. Este es el valor del campo Número del símbolo ERROR. El valor devuelto es un número.
MSSQL.RES.ERROR.STATE Devuelve el estado de error del token ERROR enviado por un servidor de base de datos de Microsoft SQL Server. Este es el valor del campo Estado del token ERROR. El valor devuelto es un número.
MSSQL.RES.FIELD().DATATYPE Devuelve el tipo de datos del campo ith de la respuesta del servidor. Las funciones EQ() y NE(), que devuelven valores booleanos para indicar el resultado de una comparación, se utilizan con este prefijo. <2>Por ejemplo, la siguiente expresión devuelve un valor booleano TRUE si la función DATATYPE devuelve un valor de fecha y hora para el tercer campo de la respuesta: MSSQL.RES.FIELD () .DATATYPE.EQ (datetime) Parámetros: i - Número de fila
MSSQL.RES.FIELD().LENGTH Devuelve la longitud máxima posible del campo enésimo de la respuesta del servidor. El valor devuelto es un número. Parámetros: i - Número de fila
MSSQL.RES.FIELD().NAME Devuelve el nombre del campo iésimo de la respuesta del servidor. El valor devuelto es de tipo texto. Parámetros: i - Número de fila
MSSQL.RES.ROW().DOUBLE_ELEM() Devuelve un valor de tipo double de la jésima columna de la enésima fila de la tabla. Si el valor no es un valor doble, se aumenta una condición UNDEF. Siguiendo las convenciones de C, los índices i y j comienzan desde 0 (cero). Por lo tanto, la fila i y la columna j son en realidad la fila (i+ 1) y la (j + 1) la columna (j + 1), respectivamente. Parámetros: i - Número de fila j - Número de columna
MSSQL.RES.ROW().NUM_ELEM(j) Devuelve un valor entero de la jésima columna de la inésima fila de la tabla. Si el valor no es un valor entero, se genera una condición UNDEF. Siguiendo las convenciones de C, los índices i y j comienzan desde 0 (cero). Por lo tanto, la fila i y la columna j son en realidad la fila (i+ 1) y la (j + 1) la columna (j + 1), respectivamente. Parámetros: i - Número de fila j - Número de columna
MSSQL.RES.ROW().IS_NULL_ELEM(j) Comprueba si la jésima columna de la enésima fila de la tabla es NULL y devuelve un valor booleano VERDADERO o FALSO para indicar el resultado. Siguiendo las convenciones de C, los índices i y j comienzan desde 0 (cero). Por lo tanto, la fila i y la columna j son en realidad la fila (i+ 1) y la (j + 1) la columna (j + 1), respectivamente. Parámetros: i - Número de fila j - Número de columna
MSSQL.RES.ROW().TEXT_ELEM(j) Devuelve una cadena de texto de la jésima columna de la inésima fila de la tabla. Siguiendo las convenciones de C, los índices i y j comienzan desde 0 (cero). Por lo tanto, la fila i y la columna j son en realidad la fila (i+ 1) y la (j + 1) la columna (j + 1), respectivamente. Parámetros: i - Número de fila j - Número de columna
MSSQL.RES.TYPE Devuelve una constante de enumeración que identifica el tipo de respuesta. Los siguientes son los posibles valores devueltos: ERROR, OK y RESULT_SET. Los operadores EQ() y NE(), que devuelven valores booleanos para indicar el resultado de una comparación, se utilizan con esta expresión.
Expresiones de directiva avanzadas: DataStream