You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSDT中“Drop objects not in source”设置未生效问题咨询

SSDT Schema Compare仍删除未在源中的对象(已禁用DropObjectsNotInSource)

问题详情

我使用SQL Server Data Tools(SSDT)的Schema Compare功能时,明明已经取消勾选“Drop objects not in source”选项,但执行更新操作时,SSDT仍会删除源中不存在的对象。具体情况:

  • 测试覆盖了表、存储过程等对象类型
  • 尝试过数据库更新项目、项目更新数据库以及跨数据库更新三种场景,问题均存在
  • 查看.scmp配置文件,确认该选项的设置是正确的:
<PropertyElementName>
  <Name>DropObjectsNotInSource</Name>
  <Value>False</Value>
</PropertyElementName>

使用环境:Visual Studio 2022 Enterprise 版本17.6.4

可行解决方法

  • 检查单个对象的部署配置:全局设置不生效可能是因为部分对象被单独配置了删除规则。在Schema Compare的结果列表中,右键目标端的对象,打开「Properties」→「Deployment Options」,确认是否勾选了“Drop if not in source”,取消后重新生成更新脚本。
  • 重建Schema Compare会话:删除现有的.scmp文件,重新创建Schema Compare会话,手动重新配置所有选项(重点确认取消“Drop objects not in source”),避免旧配置缓存导致的异常。
  • 升级SSDT版本:Visual Studio 2022 17.6.x版本存在Schema Compare配置失效的已知bug,升级到17.10及以上的最新补丁版本,可修复该问题。
  • 检查项目级部署设置:如果涉及SSDT项目作为源/目标,打开项目属性:
    • 进入「Debug」标签,确认「Deploy Action」未设置为“Drop and Create”
    • 进入「Project Settings」→「Database Settings」→「Advanced」,确认“Drop objects not in source”也设置为False(项目级配置会覆盖会话级配置)
  • 手动清理更新脚本:生成更新脚本后,手动移除所有DROP语句再执行,作为临时规避方案。

内容的提问来源于stack exchange,提问作者Shelly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:35:14