WMI イベント警告の作成
適用対象: SQL Server Azure SQL Managed Instance
重要
現在、Azure SQL Managed Instance によって、すべてではありませんが、ほとんどの SQL Server エージェントの機能がサポートされています。 詳細については、Azure SQL Managed Instance と SQL Server の T-SQL の相違点に関するページを参照してください。
この記事では、SQL Server で SQL Server Management Studio または Transact-SQL を使用して、WMI Provider for Server Events で監視されている SQL Server の特定のイベントが発生したときに通知される SQL Server エージェントの警告を作成する方法について説明します。
WMI Provider を使用して SQL Server イベントを監視する方法の詳細については、「WMI Provider for Server Events のクラスとプロパティ」を参照してください。 WMI イベント警告の通知を受信するために必要な権限の詳細については、「 SQL Server エージェント サービスのアカウントの選択」を参照してください。 WQL の詳細については、「 WMI Provider for Server Events と WQL の使用」を参照してください。
制限事項と制約事項
SQL Server Management Studio では、簡単かつグラフィカルに警告システム全体を管理でき、警告インフラストラクチャを構成するのにお勧めです。
xp_logevent
で生成されたイベントはmaster
データベースで発生します。 このため、xp_logevent
では、警告の@database_name
が'master'
または NULL になっていない限り、警告がトリガーされることはありません。SQL Server エージェントが実行されているコンピューター上の WMI 名前空間のみがサポートされます。
アクセス許可
既定では、 sp_add_alert を実行できるのは、 sp_add_alert
固定サーバー ロールのメンバーだけです。
SQL Server Management Studio を使用する
オブジェクト エクスプローラーで、プラス記号を選択して、WMI イベント警告を作成するサーバーを展開します。
プラス記号を選択して [SQL Server エージェント] を展開します。
[警告] を右クリックし、 [新しい警告]をクリックします。
[新しい警告] ダイアログ ボックスで、 [名前] ボックスに新しい警告の名前を入力します。
[有効化] チェック ボックスをオンにして、実行する警告を有効にします。 既定では、 [有効化] チェック ボックスはオンになっています。
[種類] ボックスの一覧の [WMI イベント警告]をクリックします。
[WMI イベント警告定義]の [名前空間] ボックスで、この警告を発生させる WMI イベントを識別する WQL (WMI Query Language) ステートメントの WMI 名前空間を指定します。
[クエリ] ボックスで、警告が応答するイベントを識別する WQL ステートメントを指定します。
[OK] を選択します。
Transact-SQL の使用
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。
USE msdb; GO EXEC dbo.sp_add_alert @name = N'Test Alert 2', @message_id = 54001, @notification_message = N'Error 54001 has occurred on the Sales.SalesOrderDetail table on the AdventureWorks2022 database.', @wmi_namespace = '\.\root\Microsoft\SqlServer\ServerEvents', @wmi_query = N'SELECT * FROM ALTER_TABLE WHERE DatabaseName = ''AdventureWorks2022'' AND SchemaName = ''Sales'' AND ObjectType=''Table'' AND ObjectName = ''SalesOrderDetail'''; GO