...

第6章 運用の自動化 - Microsoft

by user

on
Category: Documents
1

views

Report

Comments

Transcript

第6章 運用の自動化 - Microsoft
第6章
運用の自動化
Oracle では、Oracle Enterprise Manager などで管理の自動化を行います。
SQL Server では、
SQL Server エージェントを中心に管理の自動化を行います。
ここでは、SQL Server の管理の自動化について記述します。
ジョブの作成
SQL Server では、さまざまな作業をジョブとして定義して実行させます
(図 6-1 )。ジョブを管理するのは、SQL Server インスタンスではなく SQL
Server エージェントです。
ジョブの特徴は、以下のとおりです。
• ジョブは実行する単位であり、ジョブの中の作業単位をステップと呼び
ます。
• ステップには 1 つ以上のステップが含まれます。
• ステップには、Transact-SQL ステートメント、外部プログラム、VBScript、
JScript を記述できます。
• 各ステップの成功と失敗に応じたワークフローを作成できます。さらに、
失敗時の再試行回数と間隔を設定できます。
• ジョブを起動するスケジューリングとして、以下のものを指定できます。
① SQL Server エージェント起動時
② CPU のアイドル時
③ 指定日時
④ 定期的(毎日、毎週、毎月など)
• ジョブの成功あるいは失敗を電子メール、ポケットベル、NET SEND コマ
ンドで通知できます。さらに、Windows NT あるいは Windows 2000 の
イベントログに書き込むことも可能です。
• ジョブは実行履歴を残します。
• ジョブを削除しないで無効にすることができます。
図 6-1
ジョブの作成
052
第1部
アーキテクチャと管理
システムメッセージの管理
Oracle は、システムイベントのトリガを用いてシステムエラーの対処を自
動化します。
SQL Server では、システムテーブルにトリガを作成することはできませ
ん。そのため、以下のような処理フローに従ってエラーメッセージの対処を
行います(図 6-2)。
1. SQL Server は、エラーメッセージをイベントログに書き込みます。
2. EventLog サービスは、SQL Server エージェントにエラーメッセージを通
知します。
3. SQL Server エージェントは、通知された内容とユーザーが作成した警告
を比較し、一致したものがあれば警告に定義した処理を実行します。
たとえば、トランザクションログがいっぱいになったときに自動的にトラ
ンザクションログを別の場所へ拡張する場合は、警告とジョブを作成する
ことによって可能になります。
イベントログ
イベントの通知
「トランザクションログが
いっぱい」というログを
書き込む(エラー番号9002)
SQL Server
SQL Server
エージェント
警告
9002
JOB1
DB
JOB1の実行
図 6-2
SQL Server の
JOB1
トランザクション
ログの拡張
メッセージ処理の例
1— 6
053
第
6
章
運
用
の
自
動
化
SQL Server のメッセージには、エラー番号と重大度レベルが設定されてい
ます(図 6-3)。
• エラー番号
エラー番号は、各メッセージを識別するユニークな番号です。 1 番から
50,000 番までは SQL Server システムで予約されているシステムメッセー
ジです。
• 重大度レベル
各メッセージの重大度を示す番号で 0 から 25 まであります。数字が大き
いほど重大度は高くなります。以下に、いくつかの重大度レベルの例を
示します。
図 6-3
SQL Server のメッセージ
054
重大事レベル
意味
10
情報
14
権限に関するエラー
15
SQL ステートメントの構文エラー
17
リソース不足
21
データベースプロセスの重大なエラー
22
テーブルの整合性エラー
23
データベースの整合性エラー
24
ハードウェアエラー
第1部
アーキテクチャと管理
警告は、エラー番号、重大度レベルを指定し、それに対する処理を定義し
ます。図 6-4 は、pubs データベースのトランザクションがいっぱいになっ
第
たときの警告を作成する画面です。
6
章
運
用
の
自
動
化
図 6-4
警告の作成 1
さらに、エラーではなくパフォーマンス警告を作成することも可能です。
図 6-5 は、Northwind データベースが 1G バイト以上になったときの警告を
作成する画面です。
図 6-5
警告の作成 2
1— 6
055
ユーザー定義のメッセージ管理
SQL Server の 50,000 番以上のエラーメッセージはユーザーが自由に定義
できます。たとえば、顧客テーブルからデータを削除したときに削除した
ユーザーと削除された顧客データを営業部長に報告するメールを送信する
ことが可能です。以下の手順で行います(図 6-6)。
1. 削除したユーザーとデータを設定できるメッセージ (51,000 番 ) を作成
します。
2. 顧客テーブルに削除トリガを作成します。削除トリガに RAISERROR WITH
LOG ステートメントで 51,000 番メッセージを出すようにします。
3. 51,000 番の警告を作成し、警告の応答に営業部長へメールを送信するよ
うに設定します。
SQL Server
SQL Server
エージェント
メッセージ作成
警告作成
51,000
① ユーザーが
行を削除
51,000
メール送信
顧客
テーブル
④ メール送信
トリガ
RAIS
ERROR
イベントログ
図 6-6
ユーザー定義のメッセージ
② 51,000番の
エラーを書き込む
③ 通知
さらに、ユーザー定義のパフォーマンスカウンタを使用することも可能
です。たとえば、受注テーブルの行数が 1 万行を超えたことを知りたい場合
は、以下の手順で行います。
1. 以下の Transact-SQL を実行するジョブを毎日夜中に起動するようにスケ
ジュールを設定します。
DECLARE @x int
SET @x = (SELECT COUNT(*) FROM
sp_user_counter1 @x
受注テーブル)
2. パフォーマンス条件警告で User Counter1 が 1 万を超えたときにメール
を出すように設定します。
056
Fly UP