我正在尝试在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被中止。
这是在Visual Studio中设置的默认SQL Server实例。
答案 0 :(得分:17)
您不能执行此操作 - 您无法将数据库从较新版本的SQL Server附加/分离或备份/还原到旧版本 - 内部文件结构太不相同,无法支持向后兼容性。显然,您的数据库来自SQL Server 2016预发行版(内部版本:852),而您尝试将其附加到的引擎是SQL Server 2014(内部版本:782)。
您可以通过
解决此问题在所有计算机上使用相同版本的SQL Server - 然后您可以在实例之间轻松备份/恢复数据库
否则,您可以在SQL Server Management Studio(Tasks > Generate Scripts
中为结构(表,视图,存储过程等)和内容(表中包含的实际数据)创建数据库脚本)或使用第三方工具
或者您可以使用Red-Gate的SQL Compare和SQL Data Compare之类的第三方工具在源和目标之间进行“差异化”,根据这些差异生成更新脚本,然后在目标平台上执行这些脚本;这适用于不同的SQL Server版本。
答案 1 :(得分:0)
我在跟踪旧版Pluralsight MVC4 tutorial时遇到此问题。
该课程要求我使用v11.0,但我运行的是2015版。我打开了SQL Server对象资源管理器并查看了不同版本的LocalDB,并获取了包含我数据库的名称(右键单击&#34;重命名&#34;)。
然后我在“服务器名称”下的“添加连接”窗口中粘贴了该名称。点击刷新,瞧,那就是。希望这可以帮助那里的任何人。
答案 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脚本不那么复杂,更受欢迎。