Citrix ADC

高度なポリシー式:DataStream

Citrix ADCアプライアンスのポリシーインフラストラクチャには、アプリケーションサーバーのファームと関連するデータベースサーバーの間でアプライアンスを展開するときに、データベースサーバーのトラフィックを評価および処理するために使用できる式が含まれています。

このトピックは、次のセクションで構成されています。

  • MySQL プロトコルの式
  • SQL サーバーの接続を評価するための式

MySQL プロトコルの式

次の式は、MySQL データベースサーバーに関連付けられたトラフィックを評価します。ポリシーで要求ベースの式 (MYSQL.CLIENT および MYSQL.REQ で始まる式) を使用して、コンテンツスイッチング仮想サーバーのバインドポイントで要求切り替えの決定を行い、応答ベースの式 (MYSQL.RES で始まる式) を使用して、ユーザーに対するサーバー応答を評価できます。構成されたヘルスモニタ。

  • MYSQL.CLIENT. MySQL 接続のクライアントプロパティで操作します。

  • MYSQL.CLIENT.CAPABILITIES. 認証中にクライアントがハンドシェイク初期化パケットの capabilities フィールドに設定したフラグのセットを返します。設定されるフラグの例としては、「クライアント検索」、「クライアント圧縮」、および「クライアントSSL」があります。

  • MYSQL.CLIENT.CHAR_SET. クライアントが使用する文字セットに割り当てられた列挙定数を返します。<m> <m>比較の結果を示すブール値を返す EQ () および NE () 演算子は、このプレフィックスとともに使用されます。文字セット列挙定数は次のとおりです。

    • 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. クライアントがデータベースサーバーに送信する認証パケットで指定されたデータベースの名前を返します。これは、データベース名属性です。

  • MYSQL.CLIENT.USER。クライアントがデータベースに接続しようとしている (認証パケット内の) ユーザー名を返します。これはユーザー属性です。

  • MYSQL.REQ. MySQL リクエストで操作します。

  • MYSQL.REQ.COMMAND. 要求内のコマンドの種類に割り当てられた列挙定数を指定します。<m> <m>比較の結果を示すブール値を返す EQ () および NE () 演算子は、このプレフィックスとともに使用されます。列挙定数値を次に示します。

    • 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. MySQL リクエスト内のクエリを識別します。

  • MYSQL.REQ.QUERY.COMMAND. MySQL クエリの最初のキーワードを返します。

  • MYSQL.REQ.QUERY.SIZE. リクエストクエリのサイズを整数形式で返します。SIZE メソッドは、HTTP リクエストまたはレスポンスの長さを返す CONTENT_LENGTH メソッドに似ています。

  • MYSQL.REQ.QUERY.TEXT. クエリ全体をカバーする文字列を返します。

  • MYSQL.REQ.QUERY.TEXT(<n>). MySQL クエリの最初の n バイトを文字列として返します。これはHTTP.BODY(<n>)に似ています。

    パラメーター:

    n-返されるバイト数

  • MYSQL.RES MySQL の応答で操作します。

  • MYSQL.RES.ATLEAST_ROWS_COUNT(<i>). レスポンスに i 以上の行数があるかどうかを調べ、結果を示すブール値 TRUE または FALSE を返します。

    パラメーター:

    i-行数

  • MYSQL.RES.ERROR. MySQL エラーオブジェクトを識別します。エラーオブジェクトには、エラー番号とエラーメッセージが含まれます。

  • MYSQL.RES.ERROR.MESSAGE. サーバーのエラー応答から取得したエラーメッセージを返します。

  • MYSQL.RES.ERROR.NUM. サーバーのエラー応答から取得したエラー番号を返します。

  • MYSQL.RES.ERROR.SQLSTATE. サーバーのエラー応答の SQLSTATE フィールドの値を返します。MySQL サーバーは、エラー番号の値を SQLSTATE 値に変換します。

  • MYSQL.RES.FIELD(<i>). i<sup>番目に対応するパケットを識別します。</sup>サーバーの応答の個々のフィールド。各フィールドパケットは、関連付けられたカラムのプロパティを記述します。パケット数(i)は 0 から始まります。

    パラメーター:

    i-パケット番号

  • MYSQL.RES.FIELD(<i>).CATALOG. フィールドパケットのカタログプロパティを返します。

  • MYSQL.RES.FIELD(<i>).CHAR_SET. カラムの文字セットを返します。<m> <m>比較の結果を示すブール値を返す EQ () および NE () 演算子は、このプレフィックスとともに使用されます。

  • MYSQL.RES.FIELD(<i>).DATATYPE. カラムのデータ型を表す列挙定数を返します。これは、カラムのタイプ(enum_field_typeとも呼ばれる)属性です。<m> <m>比較の結果を示すブール値を返す EQ () および NE () 演算子は、このプレフィックスとともに使用されます。さまざまなデータタイプに使用できる値は次のとおりです。

    • DECIMAL
    • TINY
    • SHORT
    • LONG
    • FLOAT
    • DOUBLE
    • NULL
    • TIMESTAMP
    • LONGLONG
    • INT24
    • DATE
    • TIME
    • DATETIME
    • YEAR
    • NEWDATE
    • VARCHAR(MySQL 5.0の新機能)
    • BIT(MySQL 5.0の新機能)
    • NEWDECIMAL(MySQL 5.0の新機能)
    • ENUM
    • SET
    • TINY_BLOB
    • MEDIUM_BLOB
    • LONG_BLOB
    • BLOB
    • VAR_STRING
    • STRING
    • GEOMETRY
  • MYSQL.RES.FIELD(<i>).DB. フィールドパケットのデータベース識別子(db)属性を返します。

  • MYSQL.RES.FIELD(<i>).DECIMALS. 型が DECIMAL または NUMERIC の場合、小数点以下の桁数を返します。これは、フィールドパケットの小数点以下の属性です。

  • MYSQL.RES.FIELD(<i>).FLAGS. フィールドパケットの flags プロパティを返します。次に、16 進数のフラグ値を示します。

    • 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. カラムの長さを返します。これは、フィールドパケットの length 属性の値です。返される値は、実際の値よりも大きい場合があります。たとえば、VARCHAR (2) 列のインスタンスは、文字が 1 つしかない場合でも、値 2 を返すことがあります。

  • MYSQL.RES.FIELD(<i>).NAME. カラム識別子(AS 句の後の名前)を返します。これは、フィールドパケットの name 属性です。

  • MYSQL.RES.FIELD(<i>).ORIGINAL_NAME. 元のカラム ID (AS 句がある場合) を返します。これは、フィールドパケットの org_name 属性です。

  • MYSQL.RES.FIELD(<i>).ORIGINAL_TABLE. カラムの元のテーブル ID (AS 句がある場合) を返します。これは、フィールドパケットの org_table 属性です。

  • MYSQL.RES.FIELD(<i>).TABLE. カラムのテーブル ID を返します(AS 句がある場合)。フィールドパケットのテーブル属性です。

  • MYSQL.RES.FIELDS_COUNT. 応答内のフィールドパケット数(OK パケットの field_count 属性)を返します。

  • MYSQL.RES.OK データベースサーバから送信された OK パケットを識別します。

  • MYSQL.RES.OK.AFFECTED_ROWS. INSERT、UPDATE、または DELETE クエリによって影響を受けるローの数を返します。これは、OK パケットの affected_rows 属性の値です。

  • MYSQL.RES.OK.INSERT_ID. OK パケットの unique_id 属性を識別します。自動インクリメント ID が現在の MySQL ステートメントまたはクエリによって生成されない場合、unique_id の値と、式によって返される値は 0 になります。

  • MYSQL.RES.OK.MESSAGE. OK パケットのメッセージプロパティを返します。

  • MYSQL.RES.OK.STATUS. OK パケットの server_status 属性内のビット文字列を識別します。クライアントは、サーバーの状態を使用して、現在のコマンドが実行中のトランザクションの一部であるかどうかを確認できます。server_status ビット文字列のビットは、次のフィールドに対応します (指定された順序で)。

    • 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. OK パケットの warning_count 属性を返します。

  • MYSQL.RES.ROW(<i>). i<sup>番目に対応するパケットを識別します。</sup>個々のローをデータベースサーバーの応答で返します。

    パラメーター:

    i-行番号

  • MYSQL.RES.ROW(<i>).DOUBLE_ELEM(<j>). j<sup>番目のかどうかをチェック</sup> i<sup>番目の列</sup> 行が NULL であるかどうかを示します。 Cの規則に従って、インデックスiとjの両方が0から始まります。 したがって、行iと列jは実際には(i+1)<sup>番目です</sup> 行と (j+1)<sup>番目</sup>カラムにそれぞれ表示されます。

    パラメーター:

    i-行番号

    j-列番号

  • MYSQL.RES.ROW(<i>).IS_NULL_ELEM(j). j<sup>番目のかどうかをチェック</sup> i<sup>番目の列</sup> 行が NULL であるかどうかを示します。 Cの規則に従って、インデックスiとjの両方が0から始まります。 したがって、行iと列jは実際には(i+1)<sup>番目です</sup> 行と (j+1)<sup>番目</sup>カラムにそれぞれ表示されます。

    パラメーター:

    i-行番号

    j-列番号

  • MYSQL.RES.ROW(<i>).NUM_ELEM(<j>). j<sup>番目の整数値を返します。</sup> i<sup>番目の列</sup> 行の値を格納します。 Cの規則に従って、インデックスiとjの両方が0から始まります。 したがって、行iと列jは実際には(i+1)<sup>番目です</sup> 行と (j+1)<sup>番目</sup>カラムにそれぞれ表示されます。

    パラメーター:

    i-行番号

    j-列番号

  • MYSQL.RES.ROW(<i>).TEXT_ELEM(j). j<sup>番目の文字列を返します。</sup> i<sup>番目の列</sup> 行の値を格納します。 Cの規則に従って、インデックスiとjの両方が0から始まります。 したがって、行iと列jは実際には(i+1)<sup>番目です</sup> 行と (j+1)<sup>番目</sup>カラムにそれぞれ表示されます。

    パラメーター:

    i-行番号

    j-列番号

  • MYSQL.RES.TYPE. 応答型の列挙定数を返します。この値には、エラー、OK、および結果セットを指定できます。<m> <m>比較の結果を示すブール値を返す EQ () および NE () 演算子は、このプレフィックスとともに使用されます。

Microsoft SQL サーバー接続を評価するための式

次の式は、Microsoft SQL Server データベースサーバーに関連付けられたトラフィックを評価します。ポリシーでは、要求ベースの式 (MSSQL.CLIENT および MSSQL.REQ で始まる式) を使用して、コンテンツスイッチング仮想サーバーのバインドポイントで要求切り替えの決定を行い、応答ベースの式 (MSSQL.RES で始まる式) を使用して、ユーザーに対するサーバーの応答を評価できます。構成されたヘルスモニタ。

説明
MSSQL.CLIENT.CAPABILITIES LOGIN7 認証パケットのオプションフラグ 1、オプションフラグ 2、オプションフラグ 3、およびタイプフラグフィールドを 4 バイトの整数としてその順序で返します。各フィールドの長さは 1 バイトで、一連のクライアント機能を指定します。
MSSQL.CLIENT.DATABASE クライアントデータベースの名前を返します。返される値は text 型です。
MSSQL.CLIENT.USER クライアントが認証したユーザー名を返します。返される値は text 型です。
MSSQL.REQ.COMMAND Microsoft SQL Server データベースサーバーに送信される要求内のコマンドの種類を識別する列挙定数を返します。返される値は text 型です。列挙定数の値の例としては、クエリ、応答、RPC、および注意があります。<m> <m>比較の結果を示すブール値を返す EQ () および NE () 演算子は、この式で使用されます。
MSSQL.REQ.QUERY.COMMAND SQL クエリの最初のキーワードを返します。返される値は text 型です。
MSSQL.REQ.QUERY.SIZE リクエスト内の SQL クエリのサイズを返します。返される値は数値です。
MSSQL.REQ.QUERY.TEXT SQL クエリ全体を文字列として返します。返される値は text 型です。
MSSQL.REQ.QUERY.TEXT(<n>) SQL クエリの最初の n バイトを返します。返される値は text 型です。パラメータ:n-バイト数
MSSQL.REQ.RPC.NAME リモートプロシージャコール (RPC) 要求で呼び出されているプロシージャの名前を返します。名前は文字列として返されます。
MSSQL.REQ.RPC.IS_PROCID リモートプロシージャコール (RPC) 要求にプロシージャ ID または RPC 名が含まれているかどうかを示すブール型 (Boolean) の値を返します。TRUEの戻り値は要求にプロシージャ ID が含まれていることを示し、FALSEの戻り値は要求にRPC名が含まれていることを示します。
MSSQL.REQ.RPC.PROCID リモートプロシージャコール (RPC) 要求のプロシージャ ID を整数で返します。
注: 10.1 より前のリリースでは使用できません。 SQL リクエストの本文を、カンマで区切られた「a=b」句で表されるパラメータ形式の文字列として返します。ここで、「a」は RPC パラメータ名、「b」はその値です。
注: 10.1 より前のリリースでは使用できません。 SQL リクエストの本文の一部を、カンマで区切られた「a=b」句で表されるパラメータ形式の文字列として返します。ここで、「a」は RPC パラメータ名、「b」はその値です。パラメータは、リクエストの最初の「n」バイトからのみ返され、SQL ヘッダーをスキップします。完全な名前と値のペアだけが返されます。
MSSQL.RES.ATLEAST_ROWS_COUNT(i) 応答に少なくともi行数があるかどうかをチェックします。返される値は、ブール値 TRUE または FALSE です。パラメータ:i-行数
MSSQL.RES.DONE.ROWCOUNT INSERT、UPDATE、または DELETE クエリによって影響を受けるローの数を返します。返される値は、符号なし long 型です。
MSSQL.RES.DONE.STATUS Microsoft SQL Server データベースサーバーによって送信された DONE トークンからステータスフィールドを返します。返される値は数値です。
MSSQL.RES.ERROR.MESSAGE Microsoft SQL Server データベースサーバーによって送信された ERROR トークンからエラーメッセージを返します。これは、ERROR トークンの MsgText フィールドの値です。返される値は text 型です。
MSSQL.RES.ERROR.NUM Microsoft SQL Server データベースサーバーによって送信された ERROR トークンからエラー番号を返します。これは、ERROR トークンの Number フィールドの値です。返される値は数値です。
MSSQL.RES.ERROR.STATE Microsoft SQL Server データベースサーバーによって送信された ERROR トークンからエラー状態を返します。これは、ERROR トークンの State フィールドの値です。返される値は数値です。
MSSQL.RES.FIELD (<i>) .DATATYPE サーバーレスポンスのi番目のフィールドのデータ型を返します。<m> <m>比較の結果を示すブール値を返す EQ () 関数と NE () 関数は、このプレフィックスとともに使用されます。たとえば、次の式は、DATATYPE 関数が応答の 3 番目のフィールドの datetime の値を返す場合に、ブール値 TRUE を返します。MSSQL.RES.FIELD (<2>) .DATATYPE.EQ (日時) パラメーター:i-行番号
MSSQL.RES.FIELD(<i>).LENGTH サーバ応答のi番目のフィールドの可能な最大長を返します。返される値は数値です。パラメータ:i-行番号
MSSQL.RES.FIELD(<i>).NAME サーバーレスポンスのi番目のフィールドの名前を返します。返される値は text 型です。パラメータ:i-行番号
MSSQL.RES.ROW(<i>).DOUBLE_ELEM(<j>) テーブルのi番目の行の j番目の列から、double型の値を返します。値が倍精度値でない場合は、UNDEF 条件が発生します。Cの規則に従って、インデックスiとjの両方が0(ゼロ)から始まります。したがって、行 i と列 j は、実際には (i + 1) 番目の行と (j + 1) 番目の列です。パラメータ:i-行番号 j-列番号
MSSQL.RES.ROW(<i>).NUM_ELEM(j) テーブルのi番目の行の j番目の列から整数値を返します。値が整数値でない場合は、UNDEF 条件が発生します。Cの規則に従って、インデックスiとjの両方が0(ゼロ)から始まります。したがって、行 i と列 j は、実際には (i + 1) 番目の行と (j + 1) 番目の列です。パラメータ:i-行番号 j-列番号
MSSQL.RES.ROW(<i>).IS_NULL_ELEM(j) テーブルの i 番目の行の j 番目の列が NULL かどうかをチェックし、結果を示すブール値 TRUE または FALSE を返します。Cの規則に従って、インデックスiとjの両方が0(ゼロ)から始まります。したがって、行 i と列 j は、実際には (i + 1) 番目の行と (j + 1) 番目の列です。パラメータ:i-行番号 j-列番号
MSSQL.RES.ROW(<i>).TEXT_ELEM(j) テーブルのi番目の行の j番目の列からテキスト文字列を返します。Cの規則に従って、インデックスiとjの両方が0(ゼロ)から始まります。したがって、行 i と列 j は、実際には (i + 1) 番目の行と (j + 1) 番目の列です。パラメータ:i-行番号 j-列番号
MSSQL.RES.TYPE 応答の種類を識別する列挙定数を返します。考えられる戻り値は、エラー、OK、および結果セットです。<m> <m>比較の結果を示すブール値を返す EQ () および NE () 演算子は、この式で使用されます。

高度なポリシー式:DataStream