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

sqlPackage.exe not including dropped stored procedure in deployment script

我在 Visual Studio 中有一个 SQL 服务器数据库项目,我删除了一个现有的存储过程。我在本地也有一个数据库,其中存在确切的存储过程。

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

为什么 sqlPackage.exe 在我删除删除存储过程语句时省略它,但包含它以进行更改?我觉得这是我需要提供给 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"

看看 属性 DropObjectsNotInSource

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

默认为False见:DacDeployOptions.DropObjectsNotInSource Property