次の方法で共有


WMI Provider for Server Events について

SQL Server 2005 には、WMI Provider for Server Events が含まれています。このプロバイダにより、WMI (Windows Management Instrumentation) を使用して SQL Server のイベントを監視することが可能になります。このプロバイダは、SQL Server を WMI マネージ オブジェクトに変えることによって機能します。このプロバイダを使用することにより、SQL Server でイベント通知を生成できるイベントはすべて、WMI で利用できるようになります。さらに、SQL Server エージェントは、WMI とやりとりする管理アプリケーションとしてこれらのイベントに応答することができるので、SQL Server エージェントがカバーできるイベントのスコープは、以前のリリースより広くなります。

SQL Server エージェントなどの管理アプリケーションは、WQL (WMI Query Language) ステートメントを実行することで WMI Provider for Server Events を使用して、SQL Server イベントにアクセスすることができます。WQL は、WMI 特有の拡張機能を複数持つ、構造化照会言語 (SQL) の単純化されたサブセットです。WQL を使用した場合、アプリケーションは特定のデータベースまたはデータベース オブジェクトに対してイベントの種類を取得します。WMI Provider for Server Events は、クエリをイベント通知に変換し、対象データベース内のイベント通知を効率的に作成します。SQL Server でのイベント通知の動作の詳細については、「イベント通知 (データベース エンジン)」を参照してください。クエリ可能なイベントは、「WMI Provider for Server Events のクラスとプロパティ」に記載されています。

メッセージを送信するイベント通知のトリガとなるイベントが発生すると、メッセージは、msdb 内の定義済みの対象サービス (SQL/Notifications/ProcessWMIEventProviderNotification/v1.0) に送信されます。サービスは、このイベントを msdb 内の定義済みのキュー (WMIEventProviderNotificationQueue) に格納します(サービスもキューも、SQL Server に最初に接続する際にプロバイダによって動的に作成されます)。プロバイダは、このキューからイベント データを読み取り、それをマネージ オブジェクト形式 (MOF) に変換してからアプリケーションに返します。次の図に、このプロセスを示します。

サーバー イベントの WMI プロバイダのフロー図

たとえば、次の WQL クエリについて考えてみます。

SELECT * FROM DDL_DATABASE_LEVEL_EVENTS
WHERE DatabaseName = 'AdventureWorks'

このクエリに応答して、WMI Provider for Server Events は、対象データベース内に同等のイベント通知を作成します。

USE AdventureWorks ;
GO
CREATE EVENT NOTIFICATION SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9
    ON DATABASE
    WITH FAN_IN
    FOR DDL_DATABASE_LEVEL_EVENTS
    TO SERVICE
        'SQL/Notifications/ProcessWMIEventProviderNotification/v1.0', 
        'A7E5521A-1CA6-4741-865D-826F804E5135';
GO

この例では、SQLWEP_76CF38C1_18BB_42DD_A7DC_C8820155B0E9 は、プレフィックス SQLWEP_ から構成される Transact-SQL 識別子および GUID です。SQLWEP は、各識別子に対して新しい GUID を作成します。TO SERVICE 句の A7E5521A-1CA6-4741-865D-826F804E5135 値は、msdb データベース内の broker インスタンスを識別する GUID です。

WQL の機能の詳細については、「WMI Provider for Server Events と WQL の使用」を参照してください。

管理アプリケーションは、プロバイダによって定義された WMI 名前空間に接続することで、WMI Provider for Server Events を SQL Server のインスタンスにダイレクトします。Windows WMI サービスは、この名前空間をプロバイダ DLL である Sqlwep.dll にマップし、これをメモリに読み込みます。プロバイダは、SQL Server 2005 の各インスタンスに対するサーバー イベント用の WMI 名前空間を管理します。形式は、\\.\root\Microsoft\SqlServer\ServerEvents\instance_name となります。ここで、instance_name は、既定では MSSQLSERVER です。SQL Server のインスタンスに対する WMI 名前空間への接続方法の詳細については、「WMI Provider for Server Events の操作」を参照してください。

プロバイダ DLL である Sqlwep.dll は、サーバー上にある SQL Server のインスタンスの数にかかわらず、サーバーのオペレーティング システムの WMI ホスト サービスに一度だけ読み込まれます。

WMI Provider for Server Events を使用する SQL Server エージェント管理アプリケーションの例については、「サンプル : WMI Provider for Server Events の使用による SQL Server エージェント警告の作成」を参照してください。マネージ コード内で WMI Provider for Server Events を使用する管理アプリケーションの例については、「サンプル : .NET Framework での WMI イベント プロバイダの使用」を参照してください。詳細な情報は、Microsoft .NET Framework SDK の WMI に関する説明から参照することもできます。

参照

概念

WMI Provider for Server Events

ヘルプおよび情報

SQL Server 2005 の参考資料の入手