ADC

Expresiones de directiva avanzadas: DataStream

La infraestructura de directivas del dispositivo Citrix ADC incluye expresiones que puede utilizar para evaluar y procesar el tráfico del servidor de bases de datos cuando el dispositivo se implementa entre una comunidad de servidores de aplicaciones y sus servidores de base de datos asociados.

Este tema incluye las siguientes secciones:

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

Expresiones para el protocolo MySQL

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

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

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

  • MYSQL.CLIENT.CHAR_SET. Devuelve la constante de enumeración asignada al juego 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 presentan las constantes de enumeración del conjunto 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_UKRAINIAN_CI
    • CP1250_GENERAL_CI
    • LATIN2_CROATIAN_CI
    • CP1257_LITHUANIAN_CI
    • LATIN5_TURKISH_CI
    • LATIN1_GERMAN2_CI
    • ARMSCII8_GENERAL_CI
    • UTF8_GENERAL_CI
    • CP1250_CZECH_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_CROATIAN_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
    • HP8_BIN
    • KEYBCS2_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_LATVIAN_CI
    • UTF8_ROMANIAN_CI
    • UTF8_SLOVENIAN_CI
    • UTF8_POLISH_CI
    • UTF8_ESTONIAN_CI
    • UTF8_SPANISH_CI
    • UTF8_SWEDISH_CI
    • UTF8_TURKISH_CI
    • UTF8_CZECH_CI
    • UTF8_DANISH_CI
    • UTF8_LITHUANIAN_CI
    • UTF8_SLOVAK_CI
    • UTF8_SPANISH2_CI
    • UTF8_ROMAN_CI
    • UTF8_PERSIAN_CI
    • UTF8_ESPERANTO_CI
    • UTF8_HUNGARIAN_CI
    • CONJUNTO DE CARACTERES INVAL_CARACTERES
  • 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 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 en una solicitud MySQL.

  • MYSQL.REQ.COMMAND. Identifica la constante de enumeración asignada al tipo de comando en 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 presentan los valores constantes de enumeración:

    • SLEEP
    • QUIT
    • INIT_DB
    • QUERY
    • FIELD_LIST
    • CREATE_DB
    • DROP_DB
    • REFRESH
    • SHUTDOWN
    • STATISTICS
    • PROCESS_INFO
    • CONNECT
    • PROCESS_KILL
    • DEBUG
    • PING
    • HORA
    • DELAYED_INSERT
    • CHANGE_USER
    • BINLOG_DUMP
    • TABLE_DUMP
    • CONNECT_OUT
    • REGISTER_SLAVE
    • STMT_PREPARE
    • STMT_EXECUTE
    • STMT_SEND_LONG_DATA
    • STMT_CLOSE
    • STMT_RESTABLECER
    • SET_OPTION
    • STMT_FETCH
  • MYSQL.REQ.QUERY. Identifica la consulta en la solicitud MySQL.

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

  • MYSQL.REQ.QUERY.TALLA. 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 MySQL como una cadena. Esto es similar a HTTP.BODY (<n>).

    Parámetros:

    n: Número de bytes a devolver

  • MYSQL.RES. Funciona en una respuesta MySQL.

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

    Parámetros:

    i: Número de filas

  • MYSQL.RES.ERROR. Identifica el objeto de error 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 valores de número de error a valores SQLSTATE.

  • MYSQL.RES.FIELD(<i>). Identifica el paquete que corresponde al 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 llamado 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
    • TINY
    • SHORT
    • LONG
    • FLOAT
    • DOUBLE
    • NULL
    • TIMESTAMP
    • LONGLONG
    • INT24
    • FECHA
    • HORA
    • DATETIME
    • YEAR
    • NEWDATE
    • VARCHAR (nuevo en MySQL 5.0)
    • BIT (nuevo en MySQL 5.0)
    • NEWDECIMAL (nuevo en MySQL 5.0)
    • ENUMERACIÓN
    • SET
    • TINY_BLOB
    • MEDIUM_BLOB
    • LONG_BLOB
    • BLOB
    • VAR_STRING
    • STRING
    • GEOMETRY
  • 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 NUMERIC. Este es el atributo decimales del paquete de campo.

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

    • 0001: NOT_NULL_FLAG
    • 0002: PRI_KEY_FLAG
    • 0004: UNIQUE_KEY_FLAG
    • 0008: MULTIPLE_KEY_FLAG
    • 0010: BLOB_FLAG
    • 0020: UNSIGNED_FLAG
    • 0040: ZEROFILL_FLAG
    • 0080: BINARY_FLAG
    • 0100: ENUM_FLAG
    • 0200: AUTO_INCREMENT_FLAG
    • 0400: TIMESTAMP_FLAG
    • 0800: SET_FLAG
  • MYSQL.RES.FIELD(<i>).LENGTH. Devuelve la longitud de la columna. Este es el valor del atributo length del paquete de campo. El valor devuelto puede ser mayor que el valor real. Por ejemplo, una instancia de una columna VARCHAR (2) podría devolver un valor de 2 incluso cuando contenga un solo carácter.

  • MYSQL.RES.FIELD(<i>).NAME. Devuelve el identificador de columna (el nombre después de la cláusula AS, si existe). Este es el atributo name 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 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 en 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 instrucción 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 message del paquete OK.

  • MYSQL.RES.OK.STATUS. Identifica la cadena de bits en el atributo server_status del paquete OK. Los clientes pueden utilizar 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 dado):

    • IN TRANSACTION
    • AUTO_COMMIT
    • MORE RESULTS
    • MULTI QUERY
    • BAD INDEX USED
    • NO INDEX USED
    • CURSOR EXISTS
    • LAST ROW SEEN
    • DATABASE DROPPED
    • NO BACKSLASH ESCAPES
  • MYSQL.RES.OK.WARNING_COUNT. Devuelve el atributo warning_count del paquete OK.

  • MYSQL.RES.ROW(<i>). Identifica el paquete que corresponde al 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 el j<sup>th</sup> columna de la i<sup>ª</sup> fila de la tabla es NULL. Siguiendo las convenciones C, ambos índices i y j comienzan desde 0. Por lo tanto, la fila i y la columna j son en realidad el (i+1)<sup>th</sup> fila y el (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 el j<sup>th</sup> columna de la i<sup>ª</sup> fila de la tabla es NULL. Siguiendo las convenciones C, ambos índices i y j comienzan desde 0. Por lo tanto, la fila i y la columna j son en realidad el (i+1)<sup>th</sup> fila y el (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 j<sup>th</sup> columna de la i<sup>ª</sup> fila de la mesa. Siguiendo las convenciones C, ambos índices i y j comienzan desde 0. Por lo tanto, la fila i y la columna j son en realidad el (i+1)<sup>th</sup> fila y el (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 j<sup>th</sup> columna de la i<sup>ª</sup> fila de la mesa. Siguiendo las convenciones C, ambos índices i y j comienzan desde 0. Por lo tanto, la fila i y la columna j son en realidad el (i+1)<sup>th</sup> fila y el (j+1)<sup>th</sup> columna, respectivamente.

    Parámetros:

    i: Número de fila

    j: Número de columna

  • MYSQL.RES.TIPO. 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 conexiones de Microsoft SQL Server

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

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 cliente. El valor devuelto es de tipo text.
MSSQL.CLIENT.USER Devuelve el nombre de usuario con el que se autenticó el cliente. El valor devuelto es de tipo text.
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 text. Ejemplos de los valores de la constante de enumeración son QUERY, RESPONSE, RPC y ATENCIÓN. 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 text.
MSSQL.REQ.QUERY.SIZE Devuelve el tamaño de la consulta SQL en la solicitud. El valor devuelto es un número.
MSSQL.REQ.QUERY.TEXT Devuelve toda la consulta SQL como una cadena. El valor devuelto es de tipo text.
MSSQL.REQ.QUERY.TEXT() Devuelve los primeros n bytes de la consulta SQL. El valor devuelto es de tipo text. 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 procedimiento remoto (RPC). El nombre se devuelve como una cadena.
MSSQL.REQ.RPC.IS_PROCID Devuelve un valor Boolean que indica si la solicitud de llamada a procedimiento remoto (RPC) contiene un identificador de procedimiento o un nombre RPC. Un valor devuelto de trueIndica que la solicitud contiene un identificador de procedimiento y un valor devuelto de FALSE indica que la solicitud contiene un nombre RPC.
MSSQL.REQ.RPC.PROCID Devuelve el identificador de procedimiento de la solicitud de llamada a procedimiento remoto (RPC) como un entero.
MSSQL.REQ.RPC.BODY Nota: No 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 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, omitiendo el encabezado SQL. Solo se devuelven pares nombre-valor completos.
MSSQL.RES.ATLEAST_ROWS_COUNT (i) Comprueba si la respuesta tiene al menos i número de filas. El valor devuelto es un valor booleano VERDADERO o FalseValue. 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 de 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 en el token ERROR. El valor devuelto es de tipo text.
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 en el token 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 en el token ERROR. El valor devuelto es un número.
MSSQL.RES.FIELD () .TIPO DE DATOS Devuelve el tipo de datos del campo ith en la respuesta del servidor. Las operadores EQ() y NE(), que devuelven valores booleanos para indicar el resultado de una comparación, se utilizan con este prefijo. 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 (<2>).DATATYPE.EQ (datetime) Parámetros: I: Número de fila
MSSQL.RES.FIELD () .LONGITUD Devuelve la longitud máxima posible del campo ith en la respuesta del servidor. El valor devuelto es un número. Parámetros: I: Número de fila
MSSQL.RES.FIELD () .NOMBRE Devuelve el nombre del campo ith en la respuesta del servidor. El valor devuelto es de tipo text. Parámetros: I: Número de fila
MSSQL.RES.ROW () .DOUBLE_ELEMM () Devuelve un valor de tipo double de la columna jth de la primera fila de la tabla. Si el valor no es un valor doble, se genera una condición UNDEF. Siguiendo las convenciones C, ambos índices i y j comienzan desde 0 (cero). Por lo tanto, la fila i y la columna j son en realidad la (i + 1) ª fila y la (j + 1) ª columna, 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 columna jth de la fila ith de la tabla. Si el valor no es un valor entero, se genera una condición UNDEF. Siguiendo las convenciones C, ambos índices i y j comienzan desde 0 (cero). Por lo tanto, la fila i y la columna j son en realidad la (i + 1) ª fila y la (j + 1) ª columna, respectivamente. Parámetros: I: Número de fila j: Número de columna
MSSQL.RES.ROW () .IS_NULL_ELEMM (j) Comprueba si la columna jth de la ith fila de la tabla es NULL y devuelve un valor booleano TRUE o FALSE para indicar el resultado. Siguiendo las convenciones C, ambos índices i y j comienzan desde 0 (cero). Por lo tanto, la fila i y la columna j son en realidad la (i + 1) ª fila y la (j + 1) ª columna, 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 columna jth de la primera fila de la tabla. Siguiendo las convenciones C, ambos índices i y j comienzan desde 0 (cero). Por lo tanto, la fila i y la columna j son en realidad la (i + 1) ª fila y la (j + 1) ª columna, 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