○ 警告プロセス
1. | 警告発生の元となるイベントの発生 |
2. | イベントが Windows アプリケーションログに書き込まれる |
3. | Windows アプリケーションログがイベントが発生したことを SQL Server エージェントに通知 |
4.
|
SQL Server エージェントがキャッシュされている msdb..sysalerts システムテーブル内に定義されている警告とエラーを比較 |
5. | SQL Server エージェントが警告に応答 |
− msdb..sysnotifications システムテーブルを確認して電子メールメッセージを送信 | |
− msdb..sysoperators システムテーブルを確認して通知を送信するオペレータを特定 |
○ アプリケーションログへのイベント書き込み
・ | SQL Server エージェントサービス開始時にイベントビューアサービスに登録 |
・ | SQL Server がアプリケーションログに書き込むイベント |
− 重大度レベル 19 〜 25 の SQL Server エラー | |
− sp_addmessage または sp_aletrmessage システムストアドプロシージャで定義されたエラー | |
− RAISERROR WITH LOG ステートメントの実行 | |
− xp_logevent 拡張ストアドプロシージャ実行 | |
・ | アプリケーションログに SQL Server のイベントが書き込まれると SQL Server エージェントに通知 |
○ SQL Server エラーに応答する警告の作成
・ | エラーに応答する警告作成時はエラー番号またはエラーレベルを指定 | |
※ | 1イベントで1警告を発生 | |
・ | Enterprise Manager または sp_add_alert システムストアドプロシージャで警告を作成可 | |
・ | 定義済み警告は msdb..sysalerts システムテーブルに格納 → キャッシュ管理 | |
・ | エラー番号での警告の定義 | |
− | Windows アプリケーションログにエラー番号を書き込む必要あり | |
−
|
master..message システムテーブルに格納されている任意のエラー番号(システム定義警告)およびユーザー定義エラー番号で警告を定義 | |
− | 1つのエラー番号で複数の警告を定義可 | |
※ 各警告は特定の1データベースのみもしくは全データベースで適用 | ||
− | 全データベースに適用する警告作成時はエラーメッセージの内容が適切かどうか確認 | |
− | エラー番号に特定のエラーメッセージテキストを定義可 | |
・ | エラー重大度レベルでの警告の定義 | |
− | 重大度レベル 19 〜 25 のエラーはアプリケーションログに自動的に書き込み | |
− | 重大度レベル 20 〜 25 は致命的エラー → 通知するオペレータを定義する必要あり | |
− | 定義済み警告を使用する場合、通知するオペレータの指定および「Demo:...」文字を削除してから使用 | |
− | 全データベースまたは特定データベースに警告作成可 | |
− | 重大度レベルに特定のエラーメッセージテキストを定義可 | |
☆ | 重大度レベル 18 以上のエラーは電子メールエイリアス全体に警告を送信するようにする | |
・ | 指定した重大度レベル以上の未処理イベントメッセージおよび全未処理イベントメッセージを転送可 | |
⇒ | Enterprise Manager → SQL Server エージェントのプロパティ → [詳細設定]タブ |
○ ユーザー定義エラーに応答する警告の作成
・ | エラーメッセージの作成 | |
− | Enterprise Manager または sp_addmessage システムストアドプロシージャで作成 | |
⇒ Enterprise Manager → サーバーのプロパティ → [すべてのタスク] → [SQL Server メッセージの管理] | ||
⇒ sp_addmessage エラー番号, エラーレベル, 'メッセージ' | ||
− | ユーザー定義エラー番号は 50000 より大きく設定 | |
← 50000 より小さいエラー番号は定義済み SQL Server エラーで予約済み | ||
− | ユーザー定義エラーはすべて master..sysmessage システムテーブルに格納 | |
− | エラーメッセージには特定の詳細情報をキャプチャするパラメータを含めることが可 | |
− | エラーメッセージは設定中に選択した言語で表示 → 多言語のメッセージも作成可 | |
− | 警告を発生させるメッセージの場合はアプリケーションログにエラーメッセージを書き込む必要あり | |
・ | データベースアプリケーションからのエラー発生 | |
− | RAISERROR ステートメントの実行 → ストアドプロシージャやトリガで実行 | |
RAISERROR (エラー番号, エラーレベル, 状態) | ||
− | パラメータの変数を宣言 |
○ パフォーマンス条件警告
・ | Windows パフォーマンスモニタで定義した SQL Server パフォーマンス条件に対応する警告 | |
・ | 設定されたしきい値を超えた場合に警告発生 | |
・ | 作成可能なオブジェクト | |
− | Access Methods | |
− | Buffer Manager | |
− | Cache Manager | |
− | Databases | |
− | Locks | |
− | SQL Statistics | |
・ | パフォーマンスデータは1分間に数回の定期的提供のため、警告発行に遅延発生 | |
→ | 応答時間遅延を少なく設定する | |
→ | パフォーマンス条件のしきい値を変更する |
○ 緊急時のオペレータ指定
・ | 定義されているオペレータに警告通知を行えなかった場合のために指定 | |
− | 警告の応答で問題の通知方法による通知が定義されている場合 | |
− | 問題の通知方法のオペレータがすべて非番の場合 | |
− | 緊急時のオペレータが定義される場合 | |
− | SQL Server エージェントのメールセッションが開始している場合 | |
・ | Enterprise Manager → SQL Server エージェントのプロパティ → [警告システム]タブで設定 | |
・ | 緊急のオペレータ指定時の考慮点 | |
− | オペレータ情報はキャッシュに格納 → msdb データベースへの接続にかかわらずオペレータに警告通知 | |
− | オペレータは1つのみ定義可 | |
− | オペレータ作成後、割り当てられたオペレータ削除は不可 |