Windows Azure SQL データベースの更新のお知らせ
このポストは、9 月 19 日に投稿された Announcing Updates to Windows Azure SQL Database の翻訳です。
先日、Windows Azure SQL データベースに新しいサービス更新プログラムが展開され、これによって新たな機能が追加されました。新機能の概要は次のとおりです。
- SQL Server でWindows Azure SQL データベースに対するリンクサーバーおよび分散クエリをサポート
- Windows Azure SQL データベースで再帰トリガーを新たにサポート
- Windows Azure SQL データベースで DBCC SHOW_STATISTICS を新たにサポート
- Windows Azure SQL データベースのファイアウォール ルールをデータベース レベルで構成可能に
SQL Server でWindows Azure SQL データベースに対するリンクサーバーおよび分散クエリをサポート
Windows Azure SQL データベースをリンク サーバーとして追加できるようになりました。またこれに伴い、このデータベース上で、オンプレミスとクラウドの両方にわたって分散クエリを使用できるようになりました。この新しいコンポーネントは、オンプレミスの企業ネットワークと Windows Azure クラウドにまたがるデータベースのハイブリッド ソリューションとしてご利用いただけます。
SQL Server のパッケージ製品には "分散クエリ" と呼ばれる機能があります。これは、ローカルのデータ ソース内のデータと、リンク サーバーとして定義されたリモート ソース (SQL Server 以外のデータ ソースのデータを含む) 内のデータをそれぞれ結合させるためのクエリを記述する際に使用されます。これまでは、Windows Azure SQL データベースは分散クエリをネイティブでサポートしておらず、ODBC から OLEDB へのプロキシが必要でしたが、この方法ではパフォーマンスが低下するという問題がありました。しかし、今回の更新によって、Windows Azure SQL データベースで "分散クエリ" の使用が可能になりました。つまり、仮想マスターを除くすべての Windows Azure SQL データベースをそれぞれ独立したリンク サーバーとして追加可能になり、さらに他のデータベースと同様に、お使いのデータベース アプリケーションで直接使用することができます。
Windows Azure SQL データベースを使用するメリットとしては、管理の容易さ、高可用性、スケーラビリティ、使い慣れた開発モデルを使用できること、リレーショナル データ モデルを使用できることが挙げられます。クラウド環境で Windows Azure SQL データベースを使用するうえで、データベース アプリケーションの要件はたいへん重要です。すべてのデータを一度に Windows Azure SQL データベースへ移動する場合もあれば、データの一部をオンプレミス環境に置いたまま、徐々に移動するケースもあるはずです。そのようなハイブリッド データベース環境でのアプリケーション使用に対応するために、Windows Azure SQL データベースをリンク サーバーとして追加できるようにしました。また、データベース アプリケーションで分散クエリを発行して、Windows Azure SQL データベースとオンプレミスのデータ ソースのデータを結合することも可能になります。
分散クエリを使用して Windows Azure SQL データベースへの接続を確立する場合の簡単な例を以下に示します。
------ リンク サーバーを構成 -- Windows Azure SQL DB をリンク サーバーとして 1 つ追加 EXEC sp_addlinkedserver @server='myLinkedServer', -- ここでリンク サーバーの名前を指定 @srvproduct='', @provider='sqlncli', -- SQL Server のネイティブ クライアントを使用 @datasrc='myServer.database.windows.net', -- ここにサーバー名を追加 @location='', @provstr='', @catalog='myDatabase' -- ここにデータベース名を初期カタログとして追加 (マスター データベースへの接続は不可) -- このリンク サーバーの資格情報とオプションを追加 EXEC sp_addlinkedsrvlogin @rmtsrvname = 'myLinkedServer', @useself = 'false', @rmtuser = 'myLogin', -- Azure DB のログイン ID をここに追加 @rmtpassword = 'myPassword' -- Azure DB のパスワードをここに追加 EXEC sp_serveroption 'myLinkedServer', 'rpc out', true; ------ これで 4 部構成のリンク サーバー クエリが使用可能 -- Azure DB で新規テーブルを作成可能 exec ('CREATE TABLE t1tutut2(col1 int not null CONSTRAINT PK_col1 PRIMARY KEY CLUSTERED (col1) )') at myLinkedServer -- ローカルの SQL Server のデータを挿入 exec ('INSERT INTO t1tutut2 VALUES(1),(2),(3)') at myLinkedServer -- 4 部構成の名前を使用してデータにクエリを発行 select * from myLinkedServer.myDatabase.dbo.myTable |
リンク サーバーおよび分散クエリの詳細については、こちらのページを参照してください。
再帰トリガー
トリガーは、特定のデータベースに対してオプションがオン (既定) に設定されている場合、再帰的に自身を呼び出すものです。SQL Server 2012 と同じように、このオプションは次のクエリ文で構成できます。
ALTER DATABASE <データベース名> SET RECURSIVE_TRIGGERS ON|OFF;
再帰トリガーの詳細については、SQL Server 2012 のオンライン ヘルプを参照してください。
DBCC SHOW_STATISTICS を新たにサポート
DBCC SHOW_STATISTICS は、あるテーブルまたはインデックス付きビューに対する現在のクエリの最適化に関する統計を表示するものです。このクエリ オプティマイザーは、高品質のクエリ プランを作成するために、統計を使用してクエリ結果の基数や行数を見積もります。たとえば、クエリ プランでインデックス シーク演算子とインデックス スキャン演算子のどちらを選ぶかを、基数見積りに基づいてクエリ オプティマイザーが決定することがあります。インデックス スキャンはリソース使用量が多いので、使用を回避するとクエリのパフォーマンスが向上します。詳細については、こちらのページを参照してください。
SQL データベースのファイアウォールルールのデータベースレベルでの構成をサポート
これまでは、Windows Azure SQL データベースのファイアウォール ルールは、管理ポータルと T-SQL コマンドのどちらからでも、サーバー レベルでしか構成できませんでした。今回の更新によって、ファイアウォール ルールの構成の粒度がデータベース レベルになり、より詳細に構成できるようになりました。これにより、同一の論理 SQL データベース サーバーでホストされていても、データベースごとに個別にルールを構成可能です。詳細については、こちらのページを参照してください。
今回ご紹介した機能に関するご質問や詳細な技術情報については、SQL データベースの MSDN サポート フォーラム(英語)を参照してください。