无法打开数据库,因为它是版本851.此服务器支持版本782及更早版本。不支持降级路径

时间:2016-04-30 06:52:46

标签: sql-server visual-studio-2013 sql-server-2014

我正在尝试在SQL Server中附加数据库文件。我收到以下错误。我尝试从Visual Studio附加数据库时遇到的同样的错误。我正在使用Visual Studio 2013和SQL Server 2014 Management Studio。

我的连接字符串:

<add name="Sample"  
     connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\M\Desktop\SampleApplication1\App_Data\Sample.mdf;Initial Catalog=SampleDBContext;Integrated Security=True;" 
     providerName="System.Data.SqlClient"/>

错误:

  

无法打开数据库'sample',因为它是版本851.此服务器支持版本782及更早版本。不支持降级路径。无法打开新数据库'Sample'。 CREATE DATABASE被中止。

enter image description here

这是在Visual Studio中设置的默认SQL Server实例。

enter image description here

3 个答案:

答案 0 :(得分:17)

不能执行此操作 - 您无法将数据库从较新版本的SQL Server附加/分离或备份/还原到旧版本 - 内部文件结构太不相同,无法支持向后兼容性。显然,您的数据库来自SQL Server 2016预发行版(内部版本:852),而您尝试将其附加到的引擎是SQL Server 2014(内部版本:782)。

您可以通过

解决此问题
  • 在所有计算机上使用相同版本的SQL Server - 然后您可以在实例之间轻松备份/恢复数据库

  • 否则,您可以在SQL Server Management Studio(Tasks > Generate Scripts中为结构(表,视图,存储过程等)和内容(表中包含的实际数据)创建数据库脚本)或使用第三方工具

  • 或者您可以使用Red-Gate的SQL CompareSQL Data Compare之类的第三方工具在源和目标之间进行“差异化”,根据这些差异生成更新脚本,然后在目标平台上执行这些脚本;这适用于不同的SQL Server版本。

答案 1 :(得分:0)

我在跟踪旧版Pluralsight MVC4 tutorial时遇到此问题。

该课程要求我使用v11.0,但我运行的是2015版。我打开了SQL Server对象资源管理器并查看了不同版本的LocalDB,并获取了包含我数据库的名称(右键单击&#34;重命名&#34;)。

enter image description here

然后我在“服务器名称”下的“添加连接”窗口中粘贴了该名称。点击刷新,瞧,那就是。希望这可以帮助那里的任何人。

enter image description here

答案 2 :(得分:0)

如果您仍在运行Visual Studio 2015并看到此错误,则此Microsoft link可能会解决您的问题-上面的答案是答案的一部分。 (megamaiku)如果安装/访问数据库没有问题,则Mark_S的“生成脚本”答案将起作用。如果我记得SQL Compare相当昂贵,但这是一个不错的解决方案,再次假设您可以装入由Visual Studio应用程序创建的数据库。
Visual Studio 2017和SQL Server 2017也会出现类似的问题,只是您将852/856视为版本问题。

移动数据库后,更改您的web.config connectionString以匹配您的服务器; (localdb)\ MSSQLLocalDB或本地主机,具体取决于您所运行的内容  (SQL 2016/2017/2019)。

<add name="DefaultConnection"
     connectionString="Data Source=(localdb)\MSSQLLocalDB;myDB.mdf;Initial Catalog=MyDBName;Integrated Security=True"
     providerName="System.Data.SqlClient"/>

OR

<add name="DefaultConnection"
     connectionString="Data Source=localhost;myDB.mdf;Initial Catalog=MyDBName;Integrated Security=True"
     providerName="System.Data.SqlClient"/>

一篇旧文章介绍了如何一次从数据库中提取片段,如果幸运的话,它仍然可以正常工作(十年前-分开然后将它们放回一起),您也许可以来获得所需的东西-将新版本还原为旧版本。我无法找到该技巧的参考,但是除了编写整个数据库的脚本外,还没有一种方法可以通过还原标题(仅还原标题)来还原,然后在服务器上放置标题并获得权限后,依此类推匹配,则可以从较新的备份还原该数据库。
但是,generate脚本不那么复杂,更受欢迎。