1
通过比较DacPac文件和目标数据库,目前使用SqlPackage.exe命令行工具生成脚本。这将是Create the database if it doesn't already exist。SSDT如何从DACPAC文件创建新的数据库?
我们现在想切换到使用Microsoft.Data.Tools.Msbuild Nuget包(使用C#部署),但是当数据库容器不存在时,使用SchemaComparison进行比较将失败。似乎没有太多有关该软件包的文档。
作为这个包的一部分,是否有任何工具可以让我在比较之前创建一个空的数据库容器?
我目前使用下面的代码(对现有的数据库进行比较时,其工作原理):
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();
在这一点上,ComparisonResult有一条错误消息: {错误SQL0:无法打开数据库由登录请求的“DeployTestDB”。登录失败,用户'myUsername'登录失败。}
不正是你所要求的是什么,但为什么不手动创建数据库,如果它不存在?如果不存在(select * from sys.databases where name ='test')create database test; –