VS2017数据库项目构建失败:引用不存在的系统版本表文件报SQL46010错误
Fixing SQL46010 Error with Non-Existent MSSQL:: Prefix History Table in VS2017 Database Projects
我之前也碰到过这个奇葩问题!VS2017的数据库项目对系统版本化表的历史表处理有时候会抽风,尤其是当你手动指定历史表名称后,它会错误地给历史表加上MSSQL::前缀,还硬说找不到这个根本不存在的文件。常规的重启、回滚、清理操作往往不管用,下面是我亲测有效的几个解决办法:
手动清理项目的隐藏缓存文件
VS数据库项目的缓存有时候会残留错误的表引用,彻底清掉这些缓存大概率能解决问题:- 完全关闭Visual Studio
- 找到你的项目文件夹,删除隐藏的
.vs文件夹(需要先在系统设置里开启显示隐藏文件) - 同时删掉项目目录下的
bin和obj文件夹 - 重新打开项目,先执行清理解决方案,再执行重新生成解决方案
排查项目中的残留脚本引用
哪怕你回滚了所有更改,项目里可能还藏着对TestHISTORY的错误引用:- 在VS里点击编辑 -> 查找和替换 -> 在文件中查找
- 搜索
MSSQL::dbo.TestHISTORY或者TestHISTORY,重点检查Post-Deployment脚本、自定义增量脚本这些容易被忽略的地方 - 如果找到错误的引用,直接删除后再重新生成项目
用VS可视化设计器重新配置系统版本化
手动执行SYSTEM_VERSIONING = ON的命令在数据库项目里容易触发兼容性问题,换用可视化工具来配置更稳妥:- 在数据库项目中找到你要开启系统版本化的目标表(不是历史表)
- 右键点击表选择设计,打开表设计器
- 在设计器的属性面板里找到系统版本化选项,勾选启用,然后指定历史表名称(注意不要加任何前缀)
- 保存设计器的更改,让VS自动生成正确的SQL脚本,之后再重新生成项目
更新SQL Server数据工具(SSDT)版本
VS2017早期版本的SSDT存在这个已知bug,更新到最新版能直接解决问题:- 打开VS2017,点击工具 -> 扩展和更新
- 在更新列表里找到SQL Server数据工具,安装可用更新后重启VS,再尝试生成项目
内容的提问来源于stack exchange,提问作者Steven Brookes
相关产品推荐
相关产品推荐

