SQL Azure

変更点

今回のデータ層アプリケーションフレームワーク(DACFx)には、何人かの顧客から報告を受けたバグと、優先度が高い問題を解決するための修正が含まれています。

  • SQL Serverオブジェクトブラウザーから、特定の計算列の定義が含まれたテーブルを開くとSSDTがクラッシュする
  • SSDT内で、システム関数(@@)を使用しているとパースエラーが発生する
  • Windows Azure SQL DatabasesにBACPACをインポートすると、データベースへの接続がスロットリングされると、データがロストする可能性があった
  • Windows Azure SQL DatabasesからBACPACにエクスポートしてるときに、データベースへの接続がスロットリングされると、データがロストする可能性があった。

また、このリリースでは、Windows Azure SQL Databasesを対象としたときの全体的なパフォーマンスと安定性の改善を実施しています。

入手方法

Microsoftダウンロードセンターからダウンロードできます。
このバージョンのDACFxはすべての既存提供バージョンよりも優先されます。
前のバージョンからのインプレイスアップグレードに対応しています。
この新しいバージョンをインストールする前に、旧バージョンをアンインストールする必要はありません。

互換性

今回リリースしたDACFxは11/7にリリースされたSQL Server Data Tools(2012年12月版)と完全な互換性を持っています。また、SQL Server 2012、SQL Server 2012 SP1のSSMSとも互換性があります。

情報源

この投稿は、「SQL Server Data-Tier Application Framework (November 2012) Available」をざっくり意訳した投稿です。

SQL Azure

image

SEの雑記にて紹介されている「SQL Server 2012 の SSMS を使用して SQL Azure にデータベースを配置」は、データ層アプリケーション(DAC Framework)をSQL Server Management Studioの裏側で使用して実現しています。

SQL Server Management Studioで使用する以外にも、自分でDAC Frameworkを使用したコードを書いてバックアップ、デプロイをすることもできます。

SQL Server 2008 R2、SQL Server 2012それぞれでライブラリが提供されていますが、SQL Server 2008 R2とSQL Server 2012で名前空間が変わっています。

SQL Server 2008 R2では、「Microsoft.SqlServer.Management.Dac」

SQL Server 2012では、「Microsoft.SqlServer.Dac」

必要なライブラリ

Microsoft SQL Server 2012 Feature Packから「Microsoft SQL Server 2012 Data-Tier Application Framework」をダウンロードしてインストールします。

インストールをすると、「C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin」配下に、「Microsoft.SqlServer.Dac.dll」が配置されています。

最少コード

using Microsoft.SqlServer.Dac;
static void Deploy(string conx, string databaseName, string path)
{
    DacServices dacServices = new DacServices(conx);
    DacPackage dacpac = DacPackage.Load(path);
    dacServices.Deploy(dacpac, databaseName);
}

pathに「.dacpac」のファイルパス

databasenameに、「SQL Azureに新たに作成したいデータベース名」

conxに、接続文字列

を渡してあげれば、SQL Azureデータベースのデプロイの完成。

 

リファレンス

SQL Azure Team Blog

SQL Azure Team Blogに投稿された「Simplified Import and Export of Data」をざっくりと意訳した投稿です。

本日提供を始めたMicrosoft SQL Server "Denali" Data-tier Application (DAC) Framework v2.0 Feature Pack CTPを使うことで、オンプレミスのSQL ServerとSQL Azureとのデータインポートとエクスポートをとても簡単にできます。 DACフレームワークと呼ばれます。 DACについて詳しく知るには、このホワイトペーパーを参照してください。

もし試したい場合は、SQL Azure Labsページにアクセスするか、読み進めてもう少しDACについて知って下さい。

今回のDACフレームワーク更新には、3つのポイントがあります。

  1. 新しいインポート&エクスポート機能 : このDAC CTPで、インポートとエクスポート機能が導入されました。 データベーススキーマとデータを拡張子".bacpac"ファイル1つに出力されます。簡単なコマンドで、SQL ServerとSQL Azureデータベース間のデータインポート、エクスポートをとてもシンプルにできます。
  2. 無料: この機能は、SQL Serverの次期バージョン"Denali"(誰でもダウンロードすることができる無料版のSKUを含む)全てのバージョンで提供されます。
  3. 未来 = SQL Server と SQL Azureを使用するハイブリッドアプリケーション: ハイブリッドアプリケーションを作成するためにSQL ServerとSQL Azure間を行き来させるデータ機能です。SQL Server "Denali"で提供されるツールは、一般的な管理タスクのひとつ、データ移行の為にDACフレームワークを使用する予定です。 データ層アプリケーション(DAC)フレームワークは、SQL ServerとSQL Azureでデータベースを管理するための重要なデータベーススキーマ一覧と 管理ライブラリです。このCTP版では、新しいインポートとエクスポート機能は、スキーマとデータを含むデータベースのリカバリとリストアをひとつの操作でできるようにします。

SQL ServerとSQL Azure間でデータベースを保存したり移動させたい場合は、一つのファイルでデータとスキーマを含む一つのエクスポートファイルで対象データベースへエクスポートできます。また、ログイン、ユーザ、テーブル、列、制約、インデックス、ビュー、ストアドプロシージャ、関数、トリガーも含みます。一度データベースを出力したら、インポート操作でファイルをインポートできます。

今回のリリースのインポートとエクスポート機能は、SQL AzureデータベースとSQL Serverの保存、移行をフルサポートするプレビュー版です。今後、Windows SQL AzurePlatform管理ポータルへ追加します。SQL ServerとSQL Azureの次期リリースされるツールと管理機能は、オンプレミスとクラウド双方でできるようになります。

どのように使えば良いですか?

ユーザが接続できるオンプレミスのSQL Server 2008 R2インスタンス上で動作するデータベースが存在すると仮定します。次のコマンドを使用することで、一つの ".bacpac"ファイルにエクスポートできます。

DacImportExportCli.exe -s serverName -d databaseName -f C:\filePath\exportFileName.bacpac -x -e

エクスポートしてしまえば、新しく作成された拡張子".bacpac"ファイルをSQL Azureデータベースにインポーチできます。

DacImportExportCli.exe -s serverName.database.windows.net -d databaseName -f C:\filePath\fileName.bacpac -i -u userName -p password

SQL ServerもしくはSQL Azureで動作するDACデータベースは、登録を解除するか削除できます。

DacImportExportCli.exe -s serverName.database.windows.net -drop databaseName -u userName -p password

簡単にSQL Azureデータベースをローカルのエクスポートファイルにエクスポートでき、SQL Serverにインポートできます。

インポートとエクスポートをどのように使うべきですか?

エクスポートは、SQL Azureデータベースのバックアップメカニズムとして推奨されないことを重要な情報として補足します。(推奨するバックアップ機能を提供すべく動いており、近日更新されお披露目します) エクスポートファイルには、トランザクションログや過去のデータは含まれていません。エクスポートファイルには、単純にSELECT * した結果を格納し、データ整合性を考慮しないトランザクション制御されていないものです。

しかしながら、SQL Azureのコピーを作成するために、シングルユーザモードまたは、読み取り戦用モードもしくは、データベースのスナップショットからのエクスポートで、DACエクスポートをすることで、エクスポートファイルにトランザク制御したエクスポートファイルを作成できます。このドキュメントで素早くSQL AzureデータベースのCopyを作成する為の詳細な情報を記載しています。

クラウドストレージに保存されているエクスポートファイルで、SQL Azureのエクスポートとリストアを簡単にするために機能強化されました。

思ったことを私たちに教えてください

あなたからのフィードバックと、この新しい機能を使用してみた感触を教えてもらえることを本当に楽しみにしています。SQL Azureフォーラムもしくは、ここから私たちに連絡することができます。

インストールと試用するには、SQL Azure Labs ぺージにアクセスし、FAQに目を通してください。