sqlPackage.exe不包括部署脚本中删除的存储过程

时间:2016-12-07 10:52:41

标签: sql-server schema-compare sqlpackage

我在Visual Studio中有一个SQL Server数据库项目,我已经删除了一个现有的存储过程。我还有一个本地数据库,其中存在确切的存储过程。

当我在Visual Studio中运行架构比较时,在生成的架构比较窗口中,我可以看到将在生成的部署脚本中删除的存储过程。但是,当我从Powershell脚本调用sqlPackage.exe时,生成的部署脚本不包含存储过程的drop语句。有趣的是,当我对存储过程进行更改时,它会使用alter语句包含在生成的部署脚本中。

为什么sqlPackage.exe在删除它时会忽略drop storage procedure语句但是包含它以进行更改?我觉得这是我需要提供给sqlPackage.exe的参数设置,但它们似乎是选择退出,而不是选择加入(https://msdn.microsoft.com/library/hh550080(vs.103).aspx#Anchor_7)。

以下是来自Powershell的命令:

& 'sqlPackage' '/Action:Script' "/SourceFile:$sourceDacpacFile" "/TargetFile:$targetDacpacFile" "/OutputPath:$outputPath" "/TargetDatabaseName:$targetDatabaseName" "/p:AllowIncompatiblePlatform=$allowIncompatiblePlatform" "/p:BlockOnPossibleDataLoss=$blockOnPossibleDataLoss" "/p:DropIndexesNotInSource=$dropIndexesNotInSource"

1 个答案:

答案 0 :(得分:2)

查看属性 DropObjectsNotInSource

指定在发布到数据库时是否从目标数据库中删除数据库快照(.dacpac)文件中不存在的对象。此值优先于DropExtendedProperties。

默认为错误,请参阅:DacDeployOptions.DropObjectsNotInSource Property