クラウドとの連携や開発生産性が向上した「SQL Server 2012」。開発生産性を高められるツール「SQL Server Data Tools」やクラウドとオンプレミスの連携が容易になる「データ層アプリケーション」など多くの機能も追加されている。新機能や改善点を紹介し、ユーザーにどのようなメリットがあるかを徹底解説する。第3回は、データ移行、高可用性を取り上げる。

データやスキーマ情報を簡単な操作で1つのファイルに

 データ層アプリケーションは、データベースのスキーマ情報とユーザデータベースをパッケージファイルにまとめる機能である。

 従来、SQL Server 2005やSQL Server 2008のバックアップファイルをSQL Server 2008 R2で取り込むことはできても、その逆はできなかった。同じく、SQL ServerのバックアップファイルもSQL Azureに取り込むことはできなかった。

 SQL Serverのデータベース移行は一方通行だったのだ。しかしデータ層アプリケーションの登場により、バージョンニュートラルなパッケージを作成できるので、SQL Server 2005、2008、2008R2、SQL Azureの双方向なスキーマ、データの移行が可能になる(図6)。

図6●SQL AzureとSQL Serverの連携
図6●SQL AzureとSQL Serverの連携

 データ層アプリケーションは、もともとSQL Server 2008 R2で追加された機能だが、利用にはコマンドを実行する必要があった。しかしSQL Server 2012では、SQL Server Management Studioに専用のウィザードが追加された。これによって、画面操作でデータ層アプリケーションファイルを作成できるようになり、利用しやすくなった。

 SQL Server 2008 R2までに用意されていた高可用性を提供する機能には、フェイルオーバークラスタインスタンス、データベースミラーリングなどが提供されてきた。SQL Server 2012ではさらにAlwaysOnと呼ばれる機能が追加され、より柔軟で安定したシステム運用をすることができるようになった。これはExpressエディションでは利用できない。

 AlwaysOnでは、AlwaysOnフェイルオーバークラスターインスタンスとAlwaysOn可用性グループと、2種類の機能が提供されている。

 AlwaysOnフェイルオーバークラスターインスタンスは、フェイルオーバークラスタインスタンスを改良した機能である。従来は専用ストレージが必要だったが、AlwaysOnフェイルオーバークラスターインスタンスではネットワーク共有フォルダーを利用でき、サブネットをまたがる環境でも構築できるようになった。さらにtempdb*3を各インスタンスのローカルに配置できるようになり、より高速なSSDを使用した高速化を期待できる。

*3 tempdbは、SQL Serverのシステムデータベースで、データの並べ替えや一時テーブルの格納などに使用される。tempdbの競合で性能問題が発生することもある。tempdbはディスクI/Oの速い場所に設置することが望ましいデータベースである。

 AlwaysOn可用性グループは、データベースミラーリングを改良した機能である。一般的なシステム開発では、目的に応じて複数のデータベース、例えば、人事データベースと営業データベース、生産データベースを使用してシステムを構築することがよくある。そのようなシステムの場合、3つのデータベースをまとめてフェイルオーバーしなければシステムの継続提供をすることができない(図7)。これは従来のミラーリングでは実現できなかった用件だ。

図7●可用性グループ
図7●可用性グループ

 しかしAlwaysOn可用性グループでは、複数データベースを可用性グループでまとめて管理できる。ミラー先のデータベースは、セカンダリレプリカと呼ばれ、最大4つのセカンダリレプリカを作成できる。セカンダリレプリカは、負荷分散などを目的に読み取り専用データベースとして運用させられる(図8)。

図8●AlwaysOn可用性グループの概念図
図8●AlwaysOn可用性グループの概念図