2017-07-20 16 views
1

現在、DacPacファイルとターゲットデータベースを比較することにより、SqlPackage.exe cmdラインツールを使用してスクリプトを生成します。これはCreate the database if it doesn't already existになります。SSDT DACPACファイルから新しいデータベースを作成するにはどうすればよいですか?

これは、Microsoft.Data.Tools.Msbuild Nugetパッケージ(C#を使用してデプロイする)を使用するように切り替えるが、データベースコンテナが存在しない場合は、比較するためにSchemaComparisonを使用すると失敗する。パッケージに関する多くの文書はないようです。

このパッケージには、比較する前に空のデータベースコンテナを作成できるツールがありますか?私は現在、(既存のデータベースと比較するときに動作している)次のコードを使用してい

: {エラーSQL0:

SchemaCompareDacpacEndpoint sourceDacpac = new SchemaCompareDacpacEndpoint(@"C:\DeployDB.dacpac"); 

     SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder(); 
     csb.DataSource = @"."; 
     csb.InitialCatalog = "DeployTestDB"; 
     csb.IntegratedSecurity = true; 
     SchemaCompareDatabaseEndpoint targetDatabase = new SchemaCompareDatabaseEndpoint(csb.ToString()); 


     SchemaComparison comparison = new SchemaComparison(sourceDacpac, targetDatabase); 
     comparison.Options.DropObjectsNotInSource = true; 
     comparison.Options.BlockOnPossibleDataLoss = false; 
     comparison.Options.TreatVerificationErrorsAsWarnings = true; 
     comparison.Options.ScriptDatabaseOptions = true; 
     comparison.Options.GenerateSmartDefaults = true; 

     SchemaComparisonResult comparisonResult = comparison.Compare(); 

この時点で、比較結果はのエラーメッセージが表示されているデータベースをオープンすることはできませんログインによって要求された "DeployTestDB"。ログインは失敗しました。ユーザー 'myUsername'のログインに失敗しました。}

+0

ないまさにあなたが求めているが、それが存在しない場合は、なぜ、手動でデータベースを作成することではないでしょうか?存在しない場合は(select * from sys.databases where name = 'test')データベーステストを作成します。 –

答えて

0

Microsoft.SqlServer.Dac.dllのDacServicesクラスをご覧ください。

コードは次のようになります。

using Microsoft.SqlServer.Dac; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     DacServices ds = new DacServices(@"Data Source=SERVERNAME;Initial Catalog=DATABASENAME;Integrated Security=true"); 
     using (DacPackage dp = DacPackage.Load(@"C:\temp\mydb.dacpac")) 
     { 
      ds.Deploy(dp, @"DATABASENAME", upgradeExisting: false, options: null, cancellationToken: null); 
     } 
    } 
} 
関連する問題