Visual Studio 2019 Schema Compare存储过程存在状态误判问题
解决Visual Studio 2019 Schema Compare存储过程检测异常问题
常见原因及修复步骤
- 文件名与存储过程定义名不匹配
打开项目中的存储过程文件,核对CREATE PROCEDURE语句后的过程名是否为P_S_GetCaseAccountRolesAndCustomers。如果文件名是P_S_GetCaseAccountRolesAndCustomers.sql,但代码里的过程名存在拼写错误、后缀差异,Schema Compare会将其判定为不同对象,导致匹配失败。 - 文件未被纳入项目索引
在Visual Studio的SQL项目中,找到该存储过程文件,右键选择包含在项目中。部分情况下文件存在于本地目录但未被项目正式收录,会导致Schema Compare无法扫描到它。 - Schema Compare筛选配置异常
点击对比窗口右上角的齿轮图标打开选项,检查:- 对象类型筛选器:确认存储过程未被排除在对比范围外;
- 比较选项:关闭“忽略对象名称大小写”“忽略空格和注释”等可能干扰对象匹配的设置(按需调整)。
- 项目缓存或对比缓存损坏
- 右键SQL项目,依次选择清理→生成,清除旧的构建缓存;
- 关闭Visual Studio,删除项目根目录下的
.vs隐藏文件夹,重启后重新发起Schema Compare。
- 生产库与项目的存储过程存在隐性差异
即使过程名一致,若生产库中的存储过程在参数定义、权限设置、依赖对象等方面与项目版本有细微差别,Schema Compare可能误判为不同对象。手动对比两者的DDL语句,修正项目中的定义后再重新对比。
临时规避方案
如果暂时无法彻底修复,可先通过以下方式避免错误操作:
- 在Schema Compare的结果列表中,取消勾选该存储过程的删除操作,确认生产库中的过程正常后再执行同步;
- 若反向对比生成
P_S_GetCaseAccountRolesAndCustomers_1.sql文件,直接删除该自动生成的文件,确保项目中正确的存储过程文件被识别后,重新发起正向对比。
内容的提问来源于stack exchange,提问作者Aasim Shakil Pathan
相关产品推荐
相关产品推荐

