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

使用SSDT删除表后,该表仍存在于SCMP文件中如何处理?

解决SSDT SchemaCompare文件残留已删除表的问题

我之前碰到过完全一样的情况——SSDT的.scmp文件会留存之前架构比较时选中的同步项,哪怕你已经通过发布操作删除了表,旧的选中记录也不会自动清理。下面是两种靠谱的解决方法:

方法1:通过SSDT界面更新架构比较文件

  • 打开你的.scmp文件,点击工具栏上的Compare按钮重新执行架构比较
  • 比较完成后,在差异列表里找到那个已被删除的DROPPED_TABLE(它会显示为源/目标某一侧不存在的项)
  • 右键这个表,选择Remove from Comparison(部分版本可能显示为Exclude)
  • 点击工具栏的Save按钮保存.scmp文件,此时文件里的旧<SelectedItem>节点就会被自动移除

方法2:手动编辑scmp文件(界面操作无效时用)

如果界面操作没生效,可以直接修改scmp的XML内容:

  • 先完全关闭Visual Studio,避免文件被锁定无法编辑
  • 找到你的.scmp文件,用文本编辑器(比如Notepad++)打开
  • 搜索包含DROPPED_TABLE的这段代码:
    <SelectedItem Type="Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlTable, Microsoft.Data.Tools.Schema.Sql, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <Name>dbo</Name> <Name>DROPPED_TABLE</Name> </SelectedItem>
    
  • 把整个<SelectedItem>节点完整删除,注意不要误删其他节点内容
  • 保存文件后重新打开Visual Studio,这个残留的表就不会再出现在架构比较的选中项里了

额外提醒

  • 以后每次发布数据库架构变更后,建议重新运行一次架构比较并保存.scmp文件,这样能让文件始终和实际数据库架构保持同步
  • 如果你经常遇到这类问题,考虑升级到较新的SSDT版本(比如适配VS2022的版本),旧版SSDT(2015版)确实存在一些这类小bug,而且微软已经停止对VS2015的支持了

内容的提问来源于stack exchange,提问作者Codes with Hammer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:40:57