現在、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'のログインに失敗しました。}
ないまさにあなたが求めているが、それが存在しない場合は、なぜ、手動でデータベースを作成することではないでしょうか?存在しない場合は(select * from sys.databases where name = 'test')データベーステストを作成します。 –