適用対象:SQL Server
Azure SQL Managed Instance
重要
Azure SQL Managed Instance では、SQL Server エージェントのほとんどの機能が現在サポートされているわけではありません。 詳細については、Azure SQL Managed Instance T-SQL と SQL Server の違いに関するページ、または「SQL Managed Instance 内での SQL Agent ジョブの制限事項」を参照してください。
この記事では、SQL Server で SQL Server Management Studio または Transact-SQL を使用して、WMI Provider for Server Events で監視されている SQL Server の特定のイベントが発生したときに通知される SQL Server エージェントの警告を作成する方法について説明します。
WMI プロバイダーを使用して SQL Server イベントを監視する方法については、「WMI Provider for Server Events Classes and Properties」を参照してください。 WMI イベント アラート通知を受信するために必要なアクセス許可については、「SQL Server エージェント サービスのアカウントを選択する」を参照してください。 WQL の詳細については、「サーバー イベント用 WMI プロバイダーでの WQL の使用」を参照してください。
制限と制約事項
SQL Server Management Studio は、アラート システム全体を管理するための簡単でグラフィカルな方法を提供し、アラート インフラストラクチャを構成するための推奨される方法です。
xp_logevent
で生成されたイベントは、master
データベースで発生します。 そのため、アラートのxp_logevent
が@database_name
または NULL でない限り、'master'
はアラートをトリガーしません。SQL Server エージェントを実行するコンピューター上の WMI 名前空間のみがサポートされています。
権限
既定では、sysadmin 固定サーバー ロールのメンバーのみが sp_add_alert
実行できます。
SQL Server Management Studio を使用する
オブジェクト エクスプローラーで、プラス記号 選択して、WMI イベント アラートを作成するサーバーを展開します。
プラス記号を選択して、SQL Server エージェントを展開します。
アラート を右クリックし、新しいアラート を選択します。
[新しいアラート] ダイアログ ボックスの [名前] ボックスに、このアラートの名前を入力します。
[ を有効にする] チェック ボックスをオンにして、アラートの実行を有効にします。 既定では、[ を有効にする] がオンになっています。
[タイプ] リスト で、WMI イベントアラートを選択します。
[WMI イベント 警告の定義] の [名前空間 ボックスで、このアラートをトリガーする WMI イベントを識別する WMI クエリ言語 (WQL) ステートメントの 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