C#で、SQL Azureへデータ層アプリケーションをデプロイする方法
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データベースのデプロイの完成。
リファレンス
- Microsoft.SqlServer.Dac 名前空間
- Deploying a data-tier application in SQL Azure
SQL Server 2008 R2のライブラリを使用した方法と実装コードが紹介されています。
- MSDNフォーラム 「How can we deploy a SQL Server Data project as we did with a Database Project? 」
今回紹介したコードの参照元。オリジナルでは、メッセージ出力イベントも使用しています。