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苏尔les proprietes端一个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(
) et NE( ), 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(
) et NE( ), 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(
). Renvoie les n premiers octets de la requête MySQL sous forme de chaîne. Ceci est similaire à HTTP.BODY (). Paramètres :
n - Nombre d’octets à renvoyer
MYSQL.RES.Fonctionne sur une réponse MySQL.
MYSQL.RES.ATLEAST_ROWS_COUNT().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().Identifie le paquet qui correspond àla champ individuel 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().CATALOG.Renvoie la propriété catalogue du paquet de champ.
MYSQL.RES.FIELD().CHAR_SET.Renvoie le jeu de caractères de la colonne. Les opérateurs EQ(
) et NE( ), qui renvoient des valeurs booléennes pour indiquer le résultat d’une comparaison, sont utilisés avec ce préfixe. MYSQL.RES.FIELD().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(
) et NE( ), 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().DB.Renvoie l’attribut identifiant de base de données (db) du paquet de champ.
MYSQL.RES.FIELD().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().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().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().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().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().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().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().Identifie le paquet qui correspond àla ligne individuelle dans la réponse du serveur de base de données.
Paramètres :
i - Numéro de ligne
MYSQL.RES.ROW().DOUBLE_ELEM(
). Vérifie si le jth colonne dela la ligne 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 le (i+1)th la ligne et le (j+1)th colonne, respectivement.Paramètres :
i - Numéro de ligne
j - Numéro de colonne
MYSQL.RES.ROW().IS_NULL_ELEM(j).Vérifie si le jth colonne dela la ligne 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 le (i+1)th la ligne et le (j+1)th colonne, respectivement.
Paramètres :
i - Numéro de ligne
j - Numéro de colonne
MYSQL.RES.ROW().NUM_ELEM(
). Renvoie une valeur entière de la valeur jth colonne dela rangée du tableau. 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 le (i+1)th la ligne et le (j+1)th colonne, respectivement.Paramètres :
i - Numéro de ligne
j - Numéro de colonne
MYSQL.RES.ROW().TEXT_ELEM(j).Renvoie une chaîne de caractères du jth colonne dela rangée du tableau. 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 le (i+1)th la ligne et le (j+1)th colonne, 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(
) et NE( ), 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 |
---|---|
该软件。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. |
该软件。CLIENT.DATABASE | Renvoie le nom de la base de données cliente. La valeur renvoyée est de type texte. |
该软件。CLIENT.USER | Renvoie le nom d’utilisateur avec lequel le client s’est authentifié. La valeur renvoyée est de type texte. |
该软件。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, RESPONSE, RPC et ATTENTION. Les opérateurs EQ( |
该软件。REQ.QUERY.COMMAND | Renvoie le premier mot-clé de la requête SQL. La valeur renvoyée est de type texte. |
该软件。REQ.QUERY.SIZE | Renvoie la taille de la requête SQL dans la requête. La valeur renvoyée est un nombre. |
该软件。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. |
该软件。REQ.QUERY.TEXT( |
Renvoie les n premiers octets de la requête SQL. La valeur renvoyée est de type texte. Paramètres : n - Nombre d’octets |
该软件。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. |
该软件。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. |
该软件。REQ.RPC.PROCID | Renvoie l’ID de procédure de la demande d’appel de procédure distante (RPC) sous forme d’entier. |
该软件。REQ.RPC.BODYRemarque :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. |
该软件。REQ.RPC.BODY (n)Note :Non disponible pour les versions antérieures à la version 10.1. | Renvoie一部分du陆战队de la requete SQL苏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. |
该软件。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 |
该软件。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. |
该软件。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. |
该软件。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. |
该软件。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. |
该软件。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. |
该软件。RES.FIELD () .DATATYPE | Renvoie le type de données du ith champ dans la réponse du serveur. Les |
该软件。RES.FIELD (). LONGUEUR | 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 |
该软件。RES.FIELD () .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 |
该软件。RES.ROW () .DOUBLE_ELEM ( |
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 |
该软件。RES.ROW () .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 |
该软件。RES.ROW () .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 |
该软件。RES.ROW () .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 |
该软件。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( |