SQL Server 2008 R2 のインスタンス監視機能について
ITがコストセンターを脱却し戦略的資産と化した姿を、マイクロソフトは「Dynamic IT」と呼んでいます。
ビジネスニーズに合わせて柔軟にその姿を変えることができるITは、ご存知の通り「仮想化テクノロジー」によって支えられています。SQL Server は Dynamic ITにおけるデータ収集エンジンおよびレポートエンジンとして機能し、多くのマイクロソフトサーバー製品群が基盤データベースとして採用しています。
こうした背景もあり、ここ5年余り、SQL Server の基本コンセプトは「データプ ラットフォーム」から「情報プラットフォーム」へと変化しました。つまりSQL Serverは、格納されているデータを可視化し、ビジネスは当然のこと、ITシステムにもフィードバックができるプラットフォームであることをめざしています。SQL Server 2008 以降、各機能のエンハンスにはそうした考えが強く反映されており、以前にもご紹介したセルフサービスBIは、ビジネスを加速させる情報分析ツールとして、情報プラットフォームビジョンを支える顕著な例です。SQL Server 2008 R2には、これ以外にも情報プラットフォームとして重要なエンハンスがなされています。
今回は、SQL Server 2008 R2の「管理性」、その中でも「インスタンスの正常性を監視する機能」にスポットを当てて「情報プラットフォーム」ビジョンを支える機能をご紹介していきましょう。
おなじみの管理コンソール。複数のSQL Server インスタンスを1つの管理コンソールから集中的に監視、操作が可能。SQL Server 2008 R2 の管理コンソールでは、SQL Azure への接続も行える。また、[データベース] や [セキュリティ] などの各ノード、およびサブノードを右クリックすると必ず Windows PowerShell でのスクリプティング - スクリプトセンター コマンドが用意されているなど、きめの細かい変更も加えられている。
- ユーティリティエクスプローラーとマルチサーバー管理
SQL Server Management Studio に新たに追加されたタブで、「ユーティリティコントロールポイント(UCP)」および「データ層アプリケーション(DAC)」の監視と管理を行うことができる。
UCPとは、複数のサーバーに散在した多数のインスタンスを集中的に監視する単一ポイントであり、特定のインスタンスにデータウェアハウスを作成し、各インスタンスのパフォーマンス情報を集めることができる。
集めたパフォーマンスデータは、事前に定義されている「ポリシー(インスタンスの負荷、データベースの容量)」と照らし合わせ、インタンスが正常値の範囲内かどうかが判定される。その結果はレポートとして表示され、ひと目で全インスタンスの正常性を判断することができる。
ポリシーは、運用に合わせてインスタンス単位で変更することができる。そのため、従来はパフォーマンスログとにらめっこして検証しなければならなかった正常性が、たった1秒で完了できる。
なおレポートは、単にインスタンス群の現状を把握するだけでなく、以下に示す「次のアクション」への誘導灯となる。
- 新しいデータベース(データ層アプリケーション)の展開先の判断
- データベース(データ層アプリケーション)を負荷の適切なインスタンスに移動
- データ層アプリケーションの作成と展開
データベースサーバーの負荷が高い場合、負荷を分散させるためいくつかのデータベースを別のサーバーに移行したいと考えることがある。前出のユーティリティエクスプローラーを使用すると、インスタンスの状況をひと目で判断できるため、対策が必要なインスタンスや移行先候補のインスタンスを容易に割り出すことができる。
ただし、問題は移行の方法だろう。単にテーブルを移行するだけならさほど出ないにしても、ストアドプロシジャーやアクセス権など、データベースオブジェクトに含まれるあらゆる要素を調査するのは容易ではないし、その移行作業も面倒だ。
SQL Server 2008 R2 の SQL Server Management Studio(SSMS)には、データベースオブジェクトを「データ層アプリケーション」として、容易に抽出してパッケージ化できる機能を提供している。 データベースを右クリックして [タスク] - [データ層アプリケーションの抽出] を選択すると、選択したデータベースオブジェクトに含まれている要素群を拡張子「.DACPAC」というファイルに保存することができる。
抽出した .DACPAC は別のインスタンスに再配置できるので、用意に移行が可能だ。ただし、現時点では、中身のデータは別途バックアップして移行しなければならない。それでも面倒なデータベースオブジェクトの定義を一瞬でパッケージ化できることはとても大きなメリットだろう。
ちなみに、DACPAC は、SQL Server 2008 R2 の SSMS を使用すれば、SQL Server 2000、2005、2008 上のデータベースオブジェクトからでも作成することができる。つまり、古いデータベースエンジンからの移行が容易に行えるということだ。
なお、データベースは「データ層アプリケーション」として UCP の監視下に置くことができる。つまり、インスタンスだけでなく、その上で動作しているデータベースをも個々に監視対象とすることができる。UCP の監視下に置くには、SSMSのオブジェクトエクスプローラーでデータベースオブジェクトを右クリックして、[タスク] - [データ層アプリケーションとして登録] を選択するだけだ。
Visual Studio 2010 を使用している開発者は、「SQL Server データ層アプリケーション」 テンプレートを使用して、データ層アプリケーションを作成することができる。また、Visual Studio の中から、直接インスタンスにデータ層アプリケーションを発行することができる。
このように、SQL Server の管理者は、どれか1つの監視用インスタンスのユーティリティエクスプローラーから、ネットワーク上の全てのインスタンスおよびデータ層アプリケーションを集中監視することができます。
※(注意)ここから先は完全に私見です
SQL Server 2008 R2 は Sysprep に対応し、Windows Server とともに簡単に仮想環境に展開できるようになりました。さらに、うれしいことに Live Migration にも対応しました…。このような背景を考えると、今回の UCP によるデータ層アプリケーションおよびマルチサーバー管理機能は、きっと次の新たなステップへの布石のような気がします。
それは、データ層のみの Live Migrationです。あるインスタンスから、適切なリソースを持つインスタンスに、負荷や容量に応じて自動的に移行される。それも、データ層のみが。
そんな理想的な環境が、将来、きっと実現されるだろうと期待しています。