Expressions de stratégie avancées : DataStream

L’infrastructure de stratégie de l’appliance Citrix ADC comprend des expressions que vous pouvez utiliser pour évaluer et traiter le trafic du serveur de base de données lorsque l’appliance est déployée entre une batterie de serveurs d’applications et leurs serveurs de base de données associés.

Cette rubrique comprend les sections suivantes :

  • Expressions pour le protocole MySQL
  • Expressions pour évaluer les connexions Microsoft SQL Server

Expressions pour le protocole MySQL

Les expressions suivantes évaluent le trafic associé aux serveurs de base de données MySQL. Vous pouvez utiliser les expressions basées sur la demande (expressions commençant par MYSQL.CLIENT et MYSQL.REQ) dans les stratégies pour prendre des décisions de changement de demande au point de liaison du serveur virtuel de commutation de contenu et les expressions basées sur la réponse (expressions commençant par MYSQL.RES) pour évaluer les réponses du serveur à l’utilisateur. moniteurs d’intégrité configurés.

  • MYSQL.CLIENT. Fonctionne sur les propriétés client d’une connexion MySQL.

  • MYSQL.CLIENT.CAPABILITIES. Renvoie le jeu d’indicateurs que le client a défini dans le champ capacités du paquet d’initialisation de la poignée de main pendant l’authentification. Les exemples d’indicateurs définis sont CLIENT_FOUND_ROWS, CLIENT_COMPRESS et CLIENT_SSL.

  • MYSQL.CLIENT.CHAR_SET. Renvoie la constante d’énumération affectée au jeu de caractères utilisé par le client. Les opérateurs EQ(<m>) et NE(<m>), qui renvoient des valeurs booléennes pour indiquer le résultat d’une comparaison, sont utilisés avec ce préfixe. Voici les constantes d’énumération de jeu de caractères :

    • 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
    • HEBREW_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
    • HEBREW_BIN
    • 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
    • INVAL_CHARSET
  • MYSQL.CLIENT.DATABASE. Renvoie le nom de la base de données spécifiée dans le paquet d’authentification que le client envoie au serveur de base de données. Il s’agit de l’attribut databasename.

  • MYSQL.CLIENT.USER. Renvoie le nom d’utilisateur (dans le paquet d’authentification) avec lequel le client tente de se connecter à la base de données. Il s’agit de l’attribut utilisateur.

  • MYSQL.REQ. Fonctionne sur une requête MySQL.

  • MYSQL.REQ.COMMAND. Identifie la constante d’énumération affectée au type de commande dans la demande. Les opérateurs EQ(<m>) et NE(<m>), qui renvoient des valeurs booléennes pour indiquer le résultat d’une comparaison, sont utilisés avec ce préfixe. Voici les valeurs de constantes d’énumération :

    • SLEEP
    • QUIT
    • INIT_DB
    • QUERY
    • FIELD_LIST
    • CREATE_DB
    • DROP_DB
    • REFRESH
    • SHUTDOWN
    • STATISTICS
    • PROCESS_INFO
    • CONNECT
    • PROCESS_KILL
    • DEBUG
    • PING
    • TIME
    • DELAYED_INSERT
    • CHANGE_USER
    • BINLOG_DUMP
    • TABLE_DUMP
    • CONNECT_OUT
    • REGISTER_SLAVE
    • STMT_PREPARE
    • STMT_EXECUTE
    • STMT_SEND_LONG_DATA
    • STMT_CLOSE
    • STMT_RESET
    • SET_OPTION
    • STMT_FETCH
  • MYSQL.REQ.QUERY. Identifie la requête dans la requête MySQL.

  • MYSQL.REQ.QUERY.COMMAND. Renvoie le premier mot-clé de la requête MySQL.

  • MYSQL.REQ.QUERY.SIZE. Renvoie la taille de la requête au format entier. La méthode SIZE est similaire à la méthode CONTENT_LENGTH qui renvoie la longueur d’une requête ou d’une réponse HTTP.

  • MYSQL.REQ.QUERY.TEXT. Renvoie une chaîne couvrant l’ensemble de la requête.

  • MYSQL.REQ.QUERY.TEXT(<n>). Renvoie les n premiers octets de la requête MySQL sous forme de chaîne. Ceci est similaire à HTTP.BODY (<n>).

    Paramètres :

    n - Nombre d’octets à renvoyer

  • MYSQL.RES. Fonctionne sur une réponse MySQL.

  • MYSQL.RES.ATLEAST_ROWS_COUNT(<i>). Vérifie si la réponse a au moins i nombre de lignes et renvoie une valeur booléenne TRUE ou FALSE pour indiquer le résultat.

    Paramètres :

    i - Nombre de lignes

  • MYSQL.RES.ERROR. Identifie l’objet d’erreur MySQL. L’objet erreur inclut le numéro d’erreur et le message d’erreur.

  • MYSQL.RES.ERROR.MESSAGE. Renvoie le message d’erreur qui est extrait de la réponse d’erreur du serveur.

  • MYSQL.RES.ERROR.NUM. Renvoie le numéro d’erreur qui est extrait de la réponse d’erreur du serveur.

  • MYSQL.RES.ERROR.SQLSTATE. Renvoie la valeur du champ SQLSTATE dans la réponse d’erreur du serveur. Le serveur MySQL convertit les valeurs de numéro d’erreur en valeurs SQLSTATE.

  • MYSQL.RES.FIELD(<i>). Identifie le paquet qui correspond à l’i<sup>ème</sup>dans la réponse du serveur. Chaque paquet de champ décrit les propriétés de la colonne associée. Le nombre de paquets (i) commence à 0.

    Paramètres :

    i - Numéro de paquet

  • MYSQL.RES.FIELD(<i>).CATALOG. Renvoie la propriété catalogue du paquet de champ.

  • MYSQL.RES.FIELD(<i>).CHAR_SET. Renvoie le jeu de caractères de la colonne. Les opérateurs EQ(<m>) et NE(<m>), qui renvoient des valeurs booléennes pour indiquer le résultat d’une comparaison, sont utilisés avec ce préfixe.

  • MYSQL.RES.FIELD(<i>).DATATYPE. Renvoie une constante d’énumération qui représente le type de données de la colonne. Il s’agit de l’attribut type (également appelé enum_field_type) de la colonne. Les opérateurs EQ(<m>) et NE(<m>), qui renvoient des valeurs booléennes pour indiquer le résultat d’une comparaison, sont utilisés avec ce préfixe. Les valeurs possibles pour les différents types de données sont les suivantes :

    • DECIMAL
    • TINY
    • SHORT
    • LONG
    • FLOAT
    • DOUBLE
    • NULL
    • TIMESTAMP
    • LONGLONG
    • INT24
    • DATE
    • TIME
    • DATETIME
    • YEAR
    • NEWDATE
    • VARCHAR (new in MySQL 5.0)
    • BIT (new in MySQL 5.0)
    • NEWDECIMAL (new in MySQL 5.0)
    • ENUM
    • SET
    • TINY_BLOB
    • MEDIUM_BLOB
    • LONG_BLOB
    • BLOB
    • VAR_STRING
    • STRING
    • GEOMETRY
  • MYSQL.RES.FIELD(<i>).DB. Renvoie l’attribut identifiant de base de données (db) du paquet de champ.

  • MYSQL.RES.FIELD(<i>).DECIMALS. Renvoie le nombre de positions après la virgule décimale si le type est DECIMAL ou NUMERIC. Il s’agit de l’attribut décimal du paquet de champ.

  • MYSQL.RES.FIELD(<i>).FLAGS. Renvoie la propriété flags du paquet de champ. Voici les valeurs de drapeau hexadécimal possibles :

    • 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. Renvoie la longueur de la colonne. Il s’agit de la valeur de l’attribut length du paquet de champ. La valeur renvoyée peut être supérieure à la valeur réelle. Par exemple, une instance d’une colonne VARCHAR (2) peut renvoyer une valeur de 2 même lorsqu’elle ne contient qu’un seul caractère.

  • MYSQL.RES.FIELD(<i>).NAME. Renvoie l’identifiant de colonne (le nom après la clause AS, le cas échéant). Il s’agit de l’attribut name du paquet de champ.

  • MYSQL.RES.FIELD(<i>).ORIGINAL_NAME. Renvoie l’identifiant de colonne d’origine (avant la clause AS, le cas échéant). Il s’agit de l’attribut org_name du paquet de champ.

  • MYSQL.RES.FIELD(<i>).ORIGINAL_TABLE. Renvoie l’identifiant de table d’origine de la colonne (avant la clause AS, le cas échéant). Il s’agit de l’attribut org_table du paquet de champ.

  • MYSQL.RES.FIELD(<i>).TABLE. Renvoie l’identificateur de table de la colonne (après la clause AS, le cas échéant). Il s’agit de l’attribut table du paquet de champ.

  • MYSQL.RES.FIELDS_COUNT. Renvoie le nombre de paquets de champs dans la réponse (l’attribut field_count du paquet OK).

  • MYSQL.RES.OK. Identifie le paquet OK envoyé par le serveur de base de données.

  • MYSQL.RES.OK.AFFECTED_ROWS. Renvoie le nombre de lignes affectées par une requête INSERT, UPDATE ou DELETE. Il s’agit de la valeur de l’attribut affected_rows du paquet OK.

  • MYSQL.RES.OK.INSERT_ID. Identifie l’attribut unique_id du paquet OK. Si une identité auto-incrément n’est pas générée par l’instruction ou la requête MySQL actuelle, la valeur de unique_id, et donc la valeur renvoyée par l’expression, est 0.

  • MYSQL.RES.OK.MESSAGE. Renvoie la propriété message du paquet OK.

  • MYSQL.RES.OK.STATUS. Identifie la chaîne de bits dans l’attribut server_status du paquet OK. Les clients peuvent utiliser l’état du serveur pour vérifier si la commande actuelle fait partie d’une transaction en cours d’exécution. Les bits de la chaîne de bits server_status correspondent aux champs suivants (dans l’ordre donné) :

    • 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. Renvoie l’attribut warning_count du paquet OK.

  • MYSQL.RES.ROW(<i>). Identifie le paquet qui correspond à l’i<sup>ème</sup>dans la réponse du serveur de base de données.

    Paramètres :

    i - Numéro de ligne

  • MYSQL.RES.ROW(<i>).DOUBLE_ELEM(<j>).Colonnes Vérifie si le j<sup>ème</sup> colonne de la i<sup>ème</sup> de la table est NULL. Suivant les conventions C, les index i et j commencent à partir de 0. Par conséquent, la ligne i et la colonne j sont en fait la (i+1)<sup>ème</sup> et le (j+1)<sup>ème</sup> respectivement.

    Paramètres :

    i - Numéro de ligne

    j - Numéro de colonne

  • MYSQL.RES.ROW(<i>).IS_NULL_ELEM(j).Colonnes Vérifie si le j<sup>ème</sup> colonne de la i<sup>ème</sup> de la table est NULL. Suivant les conventions C, les index i et j commencent à partir de 0. Par conséquent, la ligne i et la colonne j sont en fait la (i+1)<sup>ème</sup> et le (j+1)<sup>ème</sup> respectivement.

    Paramètres :

    i - Numéro de ligne

    j - Numéro de colonne

  • MYSQL.RES.ROW(<i>).NUM_ELEM(<j>).Colonnes Retourne une valeur entière à partir du j<sup>e</sup> colonne de la i<sup>ème</sup> de la table. Suivant les conventions C, les index i et j commencent à partir de 0. Par conséquent, la ligne i et la colonne j sont en fait la (i+1)<sup>ème</sup> et le (j+1)<sup>ème</sup> respectivement.

    Paramètres :

    i - Numéro de ligne

    j - Numéro de colonne

  • MYSQL.RES.ROW(<i>).TEXT_ELEM(j).Colonnes Retourne une chaîne de la j<sup>ème</sup> colonne de la i<sup>ème</sup> de la table. Suivant les conventions C, les index i et j commencent à partir de 0. Par conséquent, la ligne i et la colonne j sont en fait la (i+1)<sup>ème</sup> et le (j+1)<sup>ème</sup> respectivement.

    Paramètres :

    i - Numéro de ligne

    j - Numéro de colonne

  • MYSQL.RES.TYPE. Renvoie une constante d’énumération pour le type de réponse. Ses valeurs peuvent être ERROR, OK et RESULT_SET. Les opérateurs EQ(<m>) et NE(<m>), qui renvoient des valeurs booléennes pour indiquer le résultat d’une comparaison, sont utilisés avec ce préfixe.

Expressions pour évaluer les connexions Microsoft SQL Server

Les expressions suivantes évaluent le trafic associé aux serveurs de base de données Microsoft SQL Server. Vous pouvez utiliser les expressions basées sur la demande (expressions commençant par MSSQL.CLIENT et MSSQL.REQ) dans les stratégies pour prendre des décisions de changement de demande au point de liaison du serveur virtuel de commutation de contenu et les expressions basées sur la réponse (expressions commençant par MSSQL.RES) pour évaluer les réponses du serveur à l’utilisateur. moniteurs d’intégrité configurés.

Expression Description
MSSQL.CLIENT.CAPABILITIES Renvoie les champs OptionFlags1, OptionFlags2, OptionFlags3 et TypeFlags du paquet Login7Authentication, dans cet ordre, sous la forme d’un entier de 4 octets. Chaque champ a une longueur de 1 octet et spécifie un ensemble de fonctionnalités client.
MSSQL.CLIENT.DATABASE Renvoie le nom de la base de données cliente. La valeur renvoyée est de type texte.
MSSQL.CLIENT.USER Renvoie le nom d’utilisateur avec lequel le client s’est authentifié. La valeur renvoyée est de type texte.
MSSQL.REQ.COMMAND Renvoie une constante d’énumération qui identifie le type de commande dans la requête envoyée à un serveur de base de données Microsoft SQL Server. La valeur renvoyée est de type texte. Les valeurs de la constante d’énumération sont QUERY, RÉPONSE, RPC et ATTENTION. Les opérateurs EQ(<m>) et NE(<m>), qui renvoient des valeurs booléennes pour indiquer le résultat d’une comparaison, sont utilisés avec cette expression.
MSSQL.REQ.QUERY.COMMAND Renvoie le premier mot-clé de la requête SQL. La valeur renvoyée est de type texte.
MSSQL.REQ.QUERY.SIZE Renvoie la taille de la requête SQL dans la requête. La valeur renvoyée est un nombre.
MSSQL.REQ.QUERY.TEXT Renvoie l’intégralité de la requête SQL sous forme de chaîne. La valeur renvoyée est de type texte.
MSSQL.REQ.QUERY.TEXT(<n>) Renvoie les n premiers octets de la requête SQL. La valeur renvoyée est de type texte. Paramètres : n - Nombre d’octets
MSSQL.REQ.RPC.NAME Renvoie le nom de la procédure appelée dans une requête RPC (Remote Procedure Call). Le nom est renvoyé sous forme de chaîne.
MSSQL.REQ.RPC.IS_PROCID Renvoie une valeur de type Boolean qui indique si la demande d’appel de procédure distante (RPC) contient un ID de procédure ou un nom de RPC. Une valeur de retour True indique que la demande contient un ID de procédure et une valeur de retour FALSE indique que la demande contient un nom RPC.
MSSQL.REQ.RPC.PROCID Renvoie l’ID de procédure de la demande d’appel de procédure distante (RPC) sous forme d’entier.
MSSQL.REQ.RPC.BODY Remarque : Non disponible pour les versions antérieures à la version 10.1. Renvoie le corps de la requête SQL sous forme de chaîne sous la forme de paramètres représentés par des clauses « a=b » séparées par des virgules, où « a » est le nom du paramètre RPC et « b » est sa valeur.
MSSQL.REQ.RPC.BODY (n) Note : Non disponible pour les versions antérieures à la version 10.1. Renvoie une partie du corps de la requête SQL sous forme de chaîne sous la forme de paramètres représentés par des clauses « a=b » séparées par des virgules, où « a » est le nom du paramètre RPC et « b » est sa valeur. Les paramètres sont renvoyés uniquement à partir des premiers « n » octets de la requête, en ignorant l’en-tête SQL. Seules les paires nom-valeur complètes sont renvoyées.
MSSQL.RES.ATLEAST_ROWS_COUNT (i) Vérifie si la réponse a au moins i nombre de lignes. La valeur renvoyée est une valeur booléenne TRUE ou FalseValue. Paramètres : i - Nombre de lignes
MSSQL.RES.DONE.ROWCOUNT Renvoie le nombre de lignes affectées par une requête INSERT, UPDATE ou DELETE. La valeur renvoyée est de type unsigned long.
MSSQL.RES.DONE.STATUS Renvoie le champ d’état à partir du jeton Done envoyé par un serveur de base de données Microsoft SQL Server. La valeur renvoyée est un nombre.
MSSQL.RES.ERROR.MESSAGE Renvoie le message d’erreur du jeton ERROR envoyé par un serveur de base de données Microsoft SQL Server. Il s’agit de la valeur du champ MsgText dans le jeton ERREUR. La valeur renvoyée est de type texte.
MSSQL.RES.ERROR.NUM Renvoie le numéro d’erreur du jeton ERROR envoyé par un serveur de base de données Microsoft SQL Server. Il s’agit de la valeur du champ Nombre dans le jeton ERREUR. La valeur renvoyée est un nombre.
MSSQL.RES.ERROR.STATE Renvoie l’état d’erreur à partir du jeton ERROR envoyé par un serveur de base de données Microsoft SQL Server. Il s’agit de la valeur du champ État dans le jeton ERROR. La valeur renvoyée est un nombre.
MSSQL.RES.FIELD(<i>).DATATYPE Renvoie le type de données du ith champ dans la réponse du serveur. Les <m> <m> fonctions EQ () et NE (), qui renvoient des valeurs booléennes pour indiquer le résultat d’une comparaison, sont utilisées avec ce préfixe. Par exemple, l’expression suivante renvoie une valeur booléenne TRUE si la fonction DATATYPE renvoie une valeur de datetime pour le troisième champ de la réponse : MSSQL.RES.FIELD(<2>) .DATATYPE.EQ(datetime) Paramètres : i - Numéro de ligne
MSSQL.RES.FIELD(<i>).LENGTH Renvoie la longueur maximale possible du ith champ dans la réponse du serveur. La valeur renvoyée est un nombre. Paramètres : i - Numéro de ligne
MSSQL.RES.FIELD(<i>).NAME Renvoie le nom du ith champ dans la réponse du serveur. La valeur renvoyée est de type texte. Paramètres : i - Numéro de ligne
MSSQL.RES.ROW(<i>).DOUBLE_ELEM(<j>) Renvoie une valeur de type double à partir de la m-ième colonne de la n-ième ligne de la table. Si la valeur n’est pas une double valeur, une condition UNDEF est déclenchée. Suivant les conventions C, les index i et j commencent à partir de 0 (zéro). Par conséquent, la ligne i et la colonne j sont en fait la (i + 1) ème ligne et la (j + 1) ème colonne, respectivement. Paramètres : i - Numéro de ligne j - Numéro de colonne
MSSQL.RES.ROW(<i>).NUM_ELEM(j) Renvoie une valeur entière de la jème colonne de la m-ième ligne de la table. Si la valeur n’est pas une valeur entière, une condition UNDEF est déclenchée. Suivant les conventions C, les index i et j commencent à partir de 0 (zéro). Par conséquent, la ligne i et la colonne j sont en fait la (i + 1) ème ligne et la (j + 1) ème colonne, respectivement. Paramètres : i - Numéro de ligne j - Numéro de colonne
MSSQL.RES.ROW(<i>).IS_NULL_ELEM(j) Vérifie si la jème colonne de la m-ième ligne de la table est NULL et renvoie une valeur booléenne TRUE ou FALSE pour indiquer le résultat. Suivant les conventions C, les index i et j commencent à partir de 0 (zéro). Par conséquent, la ligne i et la colonne j sont en fait la (i + 1) ème ligne et la (j + 1) ème colonne, respectivement. Paramètres : i - Numéro de ligne j - Numéro de colonne
MSSQL.RES.ROW(<i>).TEXT_ELEM(j) Renvoie une chaîne de texte de la jème colonne de la ième ligne de la table. Suivant les conventions C, les index i et j commencent à partir de 0 (zéro). Par conséquent, la ligne i et la colonne j sont en fait la (i + 1) ème ligne et la (j + 1) ème colonne, respectivement. Paramètres : i - Numéro de ligne j - Numéro de colonne
MSSQL.RES.TYPE Renvoie une constante d’énumération qui identifie le type de réponse. Voici les valeurs de retour possibles : ERROR, OK et RESULT_SET. Les opérateurs EQ(<m>) et NE(<m>), qui renvoient des valeurs booléennes pour indiquer le résultat d’une comparaison, sont utilisés avec cette expression.