Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
こんにちは、マイクロソフトの古水です。
今回は、ISA Server 2006 のログを SQL Sever に保存するように設定している際に、SQL Server へのログ書き込みが失敗し Microsoft Firewall サービスが停止する障害に関して説明いたします。
本現象は、下記の 2 つの条件が揃った場合に発生します。
・ISA Server の警告定義内 [ログ エラー] が有効になっている
*******************************************************************
ISA Server がログを格納する処理に失敗した場合に、既定では Microsoft Firewall サービスを停止させるように設定されています。
動作 ログ(ファイアウォール ログおよび Web プロキシ ログ) は、アクセス解析等に重要なものであるためです。設定画面は下記です。
・動作 ログの格納先が SQL Server 2005 以降である
*******************************************************************
ISA Server では、動作 ログの保存先に SQL Server を指定することが出来ます。設定画面は下記です。
SQL Server 2005 から格納するデータ検証機能が強化されたため、このデータ検証機能により適切ではないと判断された場合には、データの格納を SQL Server が拒否します。
その結果として ISA Server はログ書き込みに失敗したことを検知し、既定の設定に基づき Microsoft Firewall サービスを停止させ、通信が遮断されます。
もし、Microsoft Firewall サービスの異常停止時に、下記のようなアプリケーション ログが記録された場合には、本現象に該当する可能性があります。
アプリケーション ログの抜粋
----------------------
****/**/** 14:40:16 Microsoft Firewall 情報 なし 14182 N/A ****** Firewall サービスが停止しました。
****/**/** 14:40:16 Microsoft ISA Server Web Proxy エラー ログ 21204 N/A ****** ISA Server Web フィルタ は SQL データベース ISALOG_DB に情報のログを記録できませんでした。
SQL エラーの説明: リンク サーバー '(null)' の OLE DB プロバイダ 'STREAM' から、列 '[!BulkInsert].uri' に無効なデータが返されました。.
----------------------
本現象に該当する可能性が高い場合は、下記何れかの対処策をご検討ください。
対処策 1 - SQL Server 2005 データ検証設定を変更する
*******************************************************************
SQL Server 2005 の起動パラメータを変更し、データ検証機能を無効に設定します。
ただし、本設定を指定した場合でも、データが適切でない場合でもそのまま SQL Server 2005 に格納するのではなく、極力訂正してから格納しようとします。
本変更は SQL Server 2005 全体に影響が及ぶため、もし SQL Server を ISA Server 以外のアプリケーションも利用する場合には、、その影響についてご確認下さい。
設定方法
==========================
1. 「SQL Server Configuration Manager」を起動します。
2. 対象の SQL Server インスタンスで右クリックし [プロパティ] を実行し [詳細設定] タブを表示します。
3. 一覧中の [起動時のパラメータ] の下矢印ボタンをクリックします。
4. 現在の設定内容が表示されますので、この最後に ";-T4808"(ダブルクォートを除く)を追加します。
5. [Enter] キーを押下して入力を終えます(テキストボックスが閉じます)。
6. [OK] ボタンを押下します。
7. SQL Server 再起動まで変更が反映されない旨メッセージが表示されますが、 [OK] ボタンを押下します。
8. 対象の SQL Server インスタンスで右クリックし [再起動] を実行します。
解除方法
==========================
9. 上記 1 から 3 を実行します。
10. 追加した ";-T4808"(ダブルクォートを除く)を削除します。
11. 上記 5 ~ 8 を実行します。
※なお、SQL Server 2008 の場合は、データ検証機能を無効にすることができないため、後述する対処策 2 のみ有効です。
対処策 2 - ISA Server の警告定義の設定を変更する。
*******************************************************************
ISA Server には既定でいくつかの "警告定義" が構成されており、ログの書き込みに失敗した場合にはサービスを停止するよう定義されています。
この定義を変更することで、ログ書き込みの失敗時にサービスを停止させないことが可能となります。
==========================
1. ISA Server 管理画面を起動します。
2. 画面左側より [監視] をクリックします。
3. 画面中央の [警告] タブをクリックします。
4. 画面右側の [タスク] タブをクリックし、[警告定義の構成] をクリックします。
5. [警告のプロパティ] が開きます。[ログ エラー] をクリックして [編集] ボタンをクリックします。
6. [動作] タブをクリックし [指定されたサービスを停止する] の左にあるチェックを無効にします。
7. [OK] ボタンをクリックしてプロパティ画面を閉じます。
8. 管理画面上の [適用] ボタンをクリックして、設定を反映させます。
以上になります。