はじめに
Microsoft SQL Server 2008の発表に伴い、SQL Serverインスタンスをコントロールするための新機能が多数追加されました。この新しいコントロール機能の1つがポリシー管理です。ポリシー管理を利用すると、インスタンスをどのようにセットアップして使用するかを報告したり強制したりするポリシー(ルール)を定義できます。この記事では、ポリシーを定義する方法、そして定義したポリシーを用いてSQL Server 2008インスタンスをより適切に管理する方法について説明します。
ポリシー管理とは何か
ポリシー管理は、DBAのための新しい管理パラダイムであり、DBAがSQL Serverインスタンスをどのようにセットアップして使用するかというルールを定義できます。この定義したルールを「ポリシー」と言います。各ポリシーでは、そのポリシーによって報告または強制するルールを明確に規定するためのファセットと条件を指定します。DBAは、各ポリシーをどのように適用するかも定義できます(これについては後述します)。
ファセットとは、ストアドプロシージャやログインやテーブルなど、SQL Server内のコンポーネントです。ポリシーの作成対象にできるファセットは多種多様です。次のスクリーンショットにはたくさんのファセットが表示されていますが、これで全部ではありません。
条件は、その名が示すとおりのものです。ポリシーに適合しているかどうかを判定するためにファセットをテストする条件を指定します。条件は、1つのファセットに対してのみ定義できます。条件の内部では、ファセットの1つ以上のプロパティに対して式を定義します。それぞれの式をファセットのプロパティに対してテストすると、結果は真または偽になります。式はANDとORを使用して連結できます。式のテスト結果に基づいて、ポリシーチェックの合否が判定されます。
ポリシーを構成する要素についての基礎知識は以上です。続いて、簡単なポリシーを実際に作成してみます。まずは条件を作成します。
条件を作成する
新しいポリシーを作成するには、SQL Server 2008の[Management]フォルダを展開します。このフォルダの下に、[Policy Management]フォルダがあります。[Policy Management]フォルダを展開すると、[Policies]、[Conditions]、[Facets]という3つのフォルダが表示されます。
新しいポリシーを定義する前に、どのようなポリシーを作成するかを決定する必要があります。このデモでは、ストアドプロシージャの名前をコントロールするための非常にシンプルなポリシーを作成します。ポリシーによってプロシージャの名前をチェックし、プロシージャ名が「sp_」で始まらないようにしたいと思います。
ポリシーを定義する最初のステップは、ストアドプロシージャファセットに対する条件を作成することです。初期状態では、SQL Server 2008に作成済みの条件はありません。さまざまなポリシーすべてに対して、必要な可能性のある条件を全部定義しなければなりません。新しい条件を作成するには、[Conditions]項目を右クリックし、[New Condition...]を選択します。すると、次のダイアログボックスが表示されます。
このダイアログボックスで、まず名前を定義しなければなりません。分かりやすい条件名を定義してください。今回は、「Verify that user Stored Procedures don't start with sp underscore」という条件名を定義します。
次に、ポリシーの定義対象とするファセットを決定します。上のスクリーンショットを見ると、[Facet:]項目にドロップダウンメニューがあることが分かります。現在、ファセットは[Application Role]に設定されています。ドロップダウンメニューを使用して、[Stored Procedure]ファセットを選択する必要があります。
次に、ストアドプロシージャ名をテストして「sp_」で始まっていないことを確認する式を定義します。このプロセスの最初のステップとして、テストするフィールドを選択します。フィールドの選択は、[Create New Condition]ダイアログボックスの[Expression]領域にある[Field]列の横の参照ボタン([...])をクリックして行います。参照ボタンをクリックすると、[Stored Procedure]ファセットに関連付けられたさまざまなプロパティから選択できます。今回の条件では、[@Name]ファセットを選択します。次のステップは、有効な値に対して[@Name]フィールドをテストするための演算子([Operator])のタイプを決定することです。すべてのストアドプロシージャが「sp_」で始まらないようにしたいので、[NOT LIKE]演算子を選択します。最後に、テスト対象とする値([Value])を指定します。今回は、値の基準として「'sp_%'」と入力します。「Verify that user Stored Procedures don't start with sp underscore」条件の最終的な定義は次のようになります。
ここで注目すべき点は、条件に複数の式を指定できることです。このため、先ほど定義した条件よりもはるかに複雑な条件を作成することが可能です。
必要に応じて、上のウィンドウの左側のペインにある[Description]項目をクリックし、条件の説明を入力できます。今回の条件は非常に分かりやすいので、説明は入力しません。条件が複雑な場合は、説明を追加して条件の意図を示すことも考慮してください。
条件の定義を保存するには、ダイアログボックス下部にある[OK]ボタンをクリックするだけです。これで条件を作成し終わったので、次に進んでポリシーを作成できます。