VS 2013与SQL Server 2017兼容问题:报错‘An Incompatible SQL Server version was detected’求助
解决VS2013添加SQL Server2017数据库时的版本兼容问题
我之前也碰到过一模一样的问题!VS2013自带的SSDT对SQL Server2017的支持确实有局限,哪怕更新了常规的SSDT补丁也可能搞不定,给你几个亲测有效的方案:
方案1:安装针对VS2013的SSDT特定预览版本
VS2013的正式版SSDT最高仅支持到SQL Server2016,要兼容2017需要安装专门的预览包。你需要找到微软官方发布的支持SQL Server2017的VS2013版SSDT预览安装包,安装时选择覆盖现有SSDT组件,完成后重启VS2013再尝试添加数据库。
方案2:手动调整数据库兼容级别
如果不想折腾SSDT安装,可以先在SQL Server2017中创建数据库,降低其兼容级别后再附加到VS项目:
- 打开SQL Server Management Studio(SSMS),连接到你的2017实例
- 右键目标数据库 → 属性 → 选项 → 在「兼容级别」下拉菜单中选择「SQL Server 2016 (130)」或更低版本
- 回到VS2013,通过「附加现有数据库」的方式将该数据库添加到项目,而非直接新建数据库
方案3:修改VS2013配置文件(进阶操作)
通过重定向组件版本,强制VS2013使用SQL Server2017对应的SMO组件:
- 找到VS2013的安装目录,默认路径是
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE - 找到
devenv.exe.config文件,用管理员权限打开 - 在
<configuration>节点内添加以下配置代码:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.SqlServer.Management.Sdk.Sfc" publicKeyToken="89845dcd8080cc91" culture="neutral"/> <bindingRedirect oldVersion="10.0.0.0-12.0.0.0" newVersion="14.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.SqlServer.Smo" publicKeyToken="89845dcd8080cc91" culture="neutral"/> <bindingRedirect oldVersion="10.0.0.0-12.0.0.0" newVersion="14.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime>
- 保存文件后重启VS2013,再尝试添加数据库
备选临时方案
如果以上方法都不生效,可以暂时分开管理:用SSMS直接操作SQL Server2017数据库,VS2013只负责项目代码编写,数据库结构的修改在SSMS中完成后同步到项目即可,这样能完全避开版本检测问题。
内容的提问来源于stack exchange,提问作者user1924180
相关产品推荐
相关产品推荐

