C#で、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データベースのデプロイの完成。

 

リファレンス