高度なポリシー表現:DataStream
NetScalerアプライアンスのポリシーインフラストラクチャには、アプライアンスをアプリケーションサーバーのファームとそれに関連するデータベースサーバーの間に展開する場合のデータベースサーバートラフィックの評価と処理に使用できる式が含まれています。
このセクションでは、以下のトピックについて説明します:
- MySQL プロトコルのエクスプレッション
- Microsoft SQL サーバー接続を評価するための表現
MySQL プロトコルのエクスプレッション
次の式は、MySQL データベースサーバーに関連するトラフィックを評価します。ポリシーではリクエストベースの表現(MYSQL.CLIENT と MYSQL.REQ で始まる式)を使用してコンテンツスイッチング仮想サーバーのバインドポイントでリクエストの切り替えを決定し、応答ベースの式(MYSQL.RES で始まる式)を使用してユーザー設定のヘルスモニターに対するサーバーの応答を評価できます。
-
MYSQL.CLIENT. MySQL 接続のクライアントプロパティを操作します。
-
MYSQL.CLIENT.CAPABILITIES. 認証中にクライアントがハンドシェイク初期化パケットのケイパビリティフィールドに設定したフラグのセットを返します。設定されているフラグの例としては、CLIENT_FOUND_ROWS、CLIENT_COMPRESS、CLIENT_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
- 統計情報
- PROCESS_INFO
- CONNECT
- PROCESS_KILL
- デバッグ
- PING
- 時間
- 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 バイトを文字列で返します。This is similar to 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>thに対応するパケットを識別します</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 () 演算子が使用されます。さまざまなデータ型に指定できる値は次のとおりです。
- 小数
- 小さな
- ショート
- 長い
- フロート
- ダブル
- NULL
- タイムスタンプ
- ロングロング
- INT24
- 日付
- 時間
- 日時
- 年
- 新しい日付
- VARCHAR (MySQL 5.0 の新機能)
- ビット (MySQL 5.0 の新機能)
- 新しい十進数 (MySQL 5.0 の新機能)
- 列挙型の
- セット
- TINY_BLOB
- MEDIUM_BLOB
- LONG_BLOB
- BLOB
- VAR_STRING
- ストリング
- ジオメトリ
-
MYSQL.RES.FIELD(<i>).DB. フィールドパケットのデータベース識別子 (db) 属性を返します。
-
MYSQL.RES.FIELD(<i>).DECIMALS. タイプが DECIMAL または NUMERIC の場合、小数点以下の位置の数を返します。これはフィールドパケットの小数点属性です。
-
MYSQL.RES.FIELD(<i>).FLAGS. フィールドパケットの flags プロパティを返します。指定できる 16 進数のフラグ値は次のとおりです。
- 0001: NULLフラグなし
- 0002: PRI_KEY_FLAG
- 0004: ユニークキーフラグ
- 0008: マルチキーフラグ
- 0010: ブロッブ・フラッグ
- 0020: 署名なしフラグ
- 0040: ゼロフィルフラグ
- 0080: バイナリフラグ
- 0100: 列挙型フラグ
- 0200: オートインクリメント・フラグ
- 0400: タイムスタンプ・フラグ
- 0800: セット・フラグ
-
MYSQL.RES.FIELD(<i>).LENGTH. 列の長さを返します。これはフィールドパケットの長さ属性の値です。返される値は、実際の値よりも大きい場合があります。たとえば、VARCHAR (2) 列のインスタンスは、1 文字しか含まれていない場合でも 2 の値を返す場合があります。
-
MYSQL.RES.FIELD(<i>).NAME. 列識別子 (AS 句がある場合はそれに続く名前) を返します。これはフィールドパケットの名前属性です。
-
MYSQL.RES.FIELD(<i>).ORIGINAL_NAME. 元の列識別子 (AS 句がある場合はその前) を返します。これはフィールドパケットの org_name 属性です。
-
MYSQL.RES.FIELD(<i>).ORIGINAL_TABLE. カラムの元のテーブル識別子 (AS 句がある場合はその前) を返します。これはフィールドパケットの org_table 属性です。
-
MYSQL.RES.FIELD(<i>).TABLE. 列のテーブル識別子 (AS 句がある場合はその後) を返します。これはフィールドパケットのテーブル属性です。
-
MYSQL.RES.FIELDS_COUNT. レスポンスに含まれるフィールドパケットの数 (OK パケットの field_count 属性) を返します。
-
MYSQL.RES.OK. データベースサーバーから送信された OK パケットを識別します。
-
MYSQL.RES.OK.AFFECTED_ROWS. 挿入、更新、または DELETE クエリによって影響を受ける行の数を返します。これは OK パケットの affected_rows 属性の値です。
-
MYSQL.RES.OK.INSERT_ID. OK パケットの unique_id 属性を識別します。現在の MySQL ステートメントまたはクエリで自動インクリメント ID が生成されない場合、unique_id の値、つまり式によって返される値は 0 になります。
-
MYSQL.RES.OK.MESSAGE. OK パケットのメッセージプロパティを返します。
-
MYSQL.RES.OK.STATUS. OK パケットの server_status 属性内のビット文字列を識別します。クライアントはサーバーステータスを使用して、現在のコマンドが実行中のトランザクションの一部であるかどうかを確認できます。server_status ビット文字列のビットは、次のフィールドに対応します (指定された順序で)。
- トランザクション中
- AUTO_COMMIT
- その他の結果
- マルチクエリ
- 不正なインデックスが使用されました
- インデックスは使用されていません
- カーソルが存在する
- 最後に表示した行
- データベースがドロップされました
- バックスラッシュエスケープなし
-
MYSQL.RES.OK.WARNING_COUNT. OK パケットの warning_count 属性を返します。
-
MYSQL.RES.ROW(<i>). i<sup>thに対応するパケットを識別します</sup> データベースサーバーの応答内の個々の行。
パラメーター:
i-行番号
-
MYSQL.RES.ROW(<i>).DOUBLE_ELEM(<j>). j<sup>th番目かどうかをチェックします</sup> i<sup>th番目のカラム</sup> テーブルの行が NULL です。C の慣習に従い、インデックス i と j はどちらも 0 から始まります。<sup>したがって、行iと列jは実際には (i+1) 番目です</sup> row and the (j+1)<sup>th</sup> 列、それぞれ。
パラメーター:
i-行番号
j-列番号
-
MYSQL.RES.ROW(<i>).IS_NULL_ELEM(j). j<sup>th番目かどうかをチェックします</sup> i<sup>th番目のカラム</sup> テーブルの行が NULL です。C の慣習に従い、インデックス i と j はどちらも 0 から始まります。<sup>したがって、行iと列jは実際には (i+1) 番目です</sup> row and the (j+1)<sup>th</sup> 列、それぞれ。
パラメーター:
i-行番号
j-列番号
-
MYSQL.RES.ROW(<i>).NUM_ELEM(<j>). j<sup>th番目の整数値を返します</sup> i<sup>th番目のカラム</sup> テーブルの行。C の慣習に従い、インデックス i と j はどちらも 0 から始まります。<sup>したがって、行iと列jは実際には (i+1) 番目です</sup> row and the (j+1)<sup>th</sup> 列、それぞれ。
パラメーター:
i-行番号
j-列番号
-
MYSQL.RES.ROW(<i>).TEXT_ELEM(j). j<sup>th番目の文字列を返します</sup> i<sup>th番目のカラム</sup> テーブルの行。C の慣習に従い、インデックス i と j はどちらも 0 から始まります。<sup>したがって、行iと列jは実際には (i+1) 番目です</sup> row and the (j+1)<sup>th</sup> 列、それぞれ。
パラメーター:
i-行番号
j-列番号
-
MYSQL.RES.TYPE. レスポンスタイプの列挙定数を返します。その値には、エラー、OK、および RESULT_SET を指定できます。<m> <m>このプレフィックスには、比較の結果を示すブール値を返す EQ () 演算子と NE () 演算子が使用されます。
Microsoft SQL サーバー接続を評価するための表現
次の式は、Microsoft SQL Server データベースサーバーに関連するトラフィックを評価します。ポリシーではリクエストベースの表現(MSSQL.CLIENT と MSSQL.REQ で始まる式)を使用してコンテンツスイッチング仮想サーバーのバインドポイントでリクエストの切り替えを決定し、応答ベースの式(MSSQL.RES で始まる式)を使用してユーザー設定のヘルスモニターに対するサーバーの応答を評価できます。
式 | 説明 |
---|---|
MSSQL.CLIENT.CAPABILITIES | Login7 認証パケットの OptionFlags1、OptionFlags2、OptionFlags3、TypeFlags の各フィールドを、この順序で 4 バイトの整数として返します。各フィールドは 1 バイトの長さで、クライアント機能のセットを指定します。 |
MSSQL.CLIENT.DATABASE | クライアントデータベースの名前を返します。返される値はテキスト型です。 |
MSSQL.CLIENT.USER | クライアントの認証に使用したユーザー名を返します。返される値はテキスト型です。 |
MSSQL.REQ.COMMAND | Microsoft SQL Server データベースサーバーに送信される要求内のコマンドのタイプを識別する列挙定数を返します。返される値はテキスト型です。列挙定数の値の例としては、クエリ、レスポンス、RPC、アテンションなどがあります。 |
MSSQL.REQ.QUERY.COMMAND | SQL クエリの最初のキーワードを返します。返される値はテキスト型です。 |
MSSQL.REQ.QUERY.SIZE | リクエスト内の SQL クエリのサイズを返します。返される値は数値です。 |
MSSQL.REQ.QUERY.TEXT | SQL クエリ全体を文字列として返します。返される値はテキスト型です。 |
MSSQL.REQ.QUERY.TEXT( |
SQL クエリの最初の n バイトを返します。返される値はテキスト型です。パラメータ:n-バイト数 |
MSSQL.REQ.RPC.NAME | リモートプロシージャコール (RPC) リクエストで呼び出されているプロシージャの名前を返します。名前は文字列として返されます。 |
MSSQL.REQ.RPC.IS_PROCID | リモートプロシージャコール (RPC) リクエストにプロシージャ ID と RPC 名のどちらが含まれているかを示すブール値を返します。戻り値が True の場合はリクエストにプロシージャ ID が含まれていることを示し、FALSE の戻り値はリクエストに RPC 名が含まれていることを示します。 |
MSSQL.REQ.RPC.PROCID | リモートプロシージャコール (RPC) リクエストのプロシージャ ID を整数で返します。 |
MSSQL.REQ.RPC.BODY 注:10.1 より前のリリースでは使用できません。 | SQL リクエストの本文を、カンマで区切られた「a=b」句で表されるパラメータ形式の文字列として返します。ここで、「a」は RPC パラメータ名、「b」はその値です。 |
MSSQL.REQ.RPC.BODY (n) 注:10.1 より前のリリースでは使用できません。 | SQL リクエストの本文の一部を、カンマで区切られた「a=b」句で表されるパラメータ形式の文字列として返します。ここで、「a」は RPC パラメータ名、「b」はその値です。パラメータはリクエストの最初の「n」バイトからのみ返され、SQL ヘッダーはスキップされます。完全な名前と値のペアのみが返されます。 |
MSSQL.RES.ATLEAST_ROWS_COUNT(i) | レスポンスに i 行以上あるかどうかをチェックします。返される値は、ブール値 (TRUE) または FalseValue (偽値) です。パラメータ:i-行数 |
MSSQL.RES.DONE.ROWCOUNT | INSERT、UPDATE、または DELETE クエリによって影響を受けた行の数を返します。返される値は unsigned long 型です。 |
MSSQL.RES.DONE.STATUS | Microsoft SQL Server データベースサーバーから送信された DONE トークンからステータスフィールドを返します。返される値は数値です。 |
MSSQL.RES.ERROR.MESSAGE | Microsoft SQL Server データベースサーバーから送信された ERROR トークンからエラーメッセージを返します。これは ERROR トークンの MsgText フィールドの値です。返される値はテキスト型です。 |
MSSQL.RES.ERROR.NUM | Microsoft SQL Server データベースサーバーから送信された ERROR トークンからエラー番号を返します。これは ERROR トークンの Number フィールドの値です。返される値は数値です。 |
MSSQL.RES.ERROR.STATE | Microsoft SQL Server データベースサーバーから送信された ERROR トークンからエラー状態を返します。これは ERROR トークンの State フィールドの値です。返される値は数値です。 |
MSSQL.RES.FIELD().DATATYPE | サーバー応答の i 番目のフィールドのデータ型を返します。 |
MSSQL.RES.FIELD().LENGTH | サーバー応答の i 番目のフィールドの最大長を返します。返される値は数値です。パラメータ:i-行番号 |
MSSQL.RES.FIELD().NAME | サーバー応答の i 番目のフィールドの名前を返します。返される値はテキスト型です。パラメータ:i-行番号 |
MSSQL.RES.ROW().DOUBLE_ELEM( |
テーブルの i 番目の行の j 列目から double 型の値を返します。値が二重値でない場合、UNDEF 条件が発生します。C の慣習に従い、インデックス i と j はどちらも 0 (ゼロ) から始まります。したがって、行 i と列 j は実際には、それぞれ (i + 1) 番目の行と (j + 1) 番目の列です。パラメータ:i-行番号 j-列番号 |
MSSQL.RES.ROW().NUM_ELEM(j) | テーブルの i 行目の j 列目から整数値を返します。値が整数値でない場合、UNDEF 条件が発生します。C の慣習に従い、インデックス i と j はどちらも 0 (ゼロ) から始まります。したがって、行 i と列 j は実際には、それぞれ (i + 1) 番目の行と (j + 1) 番目の列です。パラメータ:i-行番号 j-列番号 |
MSSQL.RES.ROW().IS_NULL_ELEM(j) | テーブルの i 番目の行の j 列目が NULL かどうかをチェックし、結果を示すブール値 TRUE または FALSE を返します。C の慣習に従い、インデックス i と j はどちらも 0 (ゼロ) から始まります。したがって、行 i と列 j は実際には、それぞれ (i + 1) 番目の行と (j + 1) 番目の列です。パラメータ:i-行番号 j-列番号 |
MSSQL.RES.ROW().TEXT_ELEM(j) | テーブルの i 行目の j 列目からテキスト文字列を返します。C の慣習に従い、インデックス i と j はどちらも 0 (ゼロ) から始まります。したがって、行 i と列 j は実際には、それぞれ (i + 1) 番目の行と (j + 1) 番目の列です。パラメータ:i-行番号 j-列番号 |
MSSQL.RES.TYPE | 応答タイプを識別する列挙定数を返します。返り値として指定できるのは、エラー、OK、および RESULT_SET です。 |