Vol.8「SQL Server の管理パックを分析してみよう」スクリプトの定期実行公開日: 2004 年 11 月 29 日 河端 善博 続いて、VBScript を使ったスクリプトを対象サーバー上で定期的に実行する方法を見ていきましょう。スクリプト実行の結果、エラーがあれば、アラートにします。 図 25: イベント ルール [SQL Server Service Pack Compliance] は、VBScript を利用して SQL Server のサービスパックのバージョンが適切かどうか調べます。 [Microsoft SQL Server] - [SQL Server 2000] - [SQL Server 2000 Health and Availability] のイベント ルール [SQL Server Service Pack Compliance] は、VBScript で作成したスクリプトを定期的に実行して、対象サーバー上の SQL Server 2000 のバージョンを調べ、指定されたサービスパック以上になっていることを確認します。 では、プロパティを見ていきましょう。 図 26: イベント ルールの [全般] タブは、ルール名を指定します。 [全般] タブは、これまでにみてきたイベント ルールと同じです。 続いて、[データ プロバイダ] タブを見てみましょう。 図 27: [データ プロバイダ] タブでは、時間指定イベントを使っています。 [データ プロバイダ] タブでは、[プロバイダの種類] に [時間指定イベント] を選択しています。このプロバイダの部分で、スクリプトを実行するタイミング、時間間隔を指定します。 [変更] ボタンをクリックしてみましょう。 図 28: [時間指定イベント] プロバイダでは、イベントの間隔と同期時刻を指定できます。 [時間指定プロバイダ] では、イベントを生成する間隔と、同期時刻を指定することができます。ここでは、1440 分 = 1 日間隔を指定していますので、毎日 4:30 にスクリプトを実行することになります。 [条件]、[スケジュール]、[アラート] のタブは、特に指定しません。 [スケジュール] は [常にデータを処理する] ことになります。 [アラートの抑制] タブも他のルールと同様に指定しておきます。 では、[応答] タブを見てみましょう。 図 29: [応答] タブでは、実行するスクリプトを選択しています。 [応答] タブで、実行するスクリプトを指定します。ここでは、[SQL Server 2000 Service Pack Compliance] スクリプトを指定しています。 MOM サーバーで管理しているスクリプトは、次のフォルダからも一覧で見ることができます。 図 30: [管理パック] - [スクリプト] フォルダでは、MOM が管理するスクリプトの一覧を確認することができます。 [スクリプト] フォルダには、さまざまなルールで利用されるスクリプトの一覧を見ることができます。スクリプトは複数のルールで共有することができます。 なお、このスクリプトフォルダでは、各スクリプトを参照しているルールを検索することができません。 次のクエリにより、スクリプト名から、ルール名とルール グループ名を得ることができます。 クエリ: スクリプト名から、ルール名とルール グループ名を得る
このクエリでは、スクリプト名が 'SQL' で始まるスクリプトの一覧と、それぞれを参照するルールとルール グループを表示しています。 なお、このクエリで利用しているテーブルは、MOM SDK にて開発者用として公開されているテーブルやビューではありませんので、将来変更になる可能性があります。 では、図 29 の [応答] タブに戻って、[編集] ボタンをクリックしてみましょう。 図 31: [スクリプトの起動] ダイアログは、スクリプト名、実行場所、パラメータなどを指定しています。 [スクリプトの起動] ダイアログでは、実行するスクリプト名をまず指定しています。さらに、[実行場所] は、エージェント コンピュータを指定しています。これでスクリプトが対象サーバー上で実行される方になります。対象サーバーで実行させる代わりに、MOM 管理サーバーで実行させることもできます。 なお、実行するスクリプトは、エージェントが自動的に MOM サーバーから対象サーバーにコピーします。 [応答タイムアウト] には、スクリプトを実行する時間を分単位に指定します。 [スクリプトのパラメータ] には、スクリプトの入力値として利用する値を指定します。ルールによってパラメータを変更して定義することができるので、とても便利ですね。 さらに、[編集] ボタンをクリックしてみましょう。 図 32: [スクリプトのプロパティ] ダイアログでは、スクリプトのソースコードなどを編集できます。 [スクリプトのプロパティ] ダイアログが表示されます。 図 33: [スクリプト] タブでは、スクリプトの内容を編集することができます。 [スクリプト] タブでは、VBScript などスクリプトの内容を編集することができます。 図 34: [パラメータ] タブでは、パラメータの定義と、既定値を指定します。 [パラメータ] タブでは、スクリプトのパラメータを定義します。既定値を指定することもできます。定義したパラメータは、次のように参照することができます。 スクリプト: パラメータを変数に取り込む VBScript
定義したパラメータを内部変数に取り込む VBScript です。 また、このスクリプトは、バージョンが適切でない SQL Server インスタンスを見つけた場合、エラーを報告します。 スクリプト: イベント ログにイベントを書き込む VBScript
これで、スクリプトを定期的に実行するイベント ルール [SQL Server Service Pack Compliance] ができました。 しかし、このままでは、エラーが発生しても、アラートになりません。 そこで、次のイベント ルールがあります。 図 35: [SQL Server Service Pack Compliance] で発生したエラーは、[SQL Server Service Pack Compliance - Version does not comply] によってアラートとして報告されます。 イベント ルール [SQL Server Service Pack Compliance - Version does not comply] は、[SQL Server Service Pack Compliance] でエラーがイベント ログに書き込まれた場合に、自動的にアラートにするためのルールです。 図 36: イベント ルール [SQL Server Service Pack Compliance] が発生するイベント 29106 を発見すると、アラートにします。 イベント ルール [SQL Server Service Pack Compliance] は、SQL Server 2000 のサービスパックが適用されていなかった場合、イベント ID 29106 を書き込みます。 そこで、イベント ルール [SQL Server Service Pack Compliance - Version does not comply] は、これを条件として、アラートを発生させます。 このように、エージェント上でスクリプトの定期実行させる方法と、エラー発生時に、アラートを発生させる方法を定義しています。 ページのトップへ |
目次著者 |