两部分问题。
我已经使用VS 2015 Update 3创建了一个ASP.NET MVC 5应用程序。与本地计算机上的项目一起使用时,我有很多方法。突然,我不再能够通过SQL Server对象资源管理器连接到.mdf
数据库文件并得到以下错误:
数据库'aspnet-DevilsTowerMVC-20180327093314'无法打开,因为它的版本为852。此服务器支持版本782和更早的版本。不支持降级路径。无法打开新数据库“ aspnet-DevilsTowerMVC-20180327093314”。 CREATE DATABASE被中止。无法将文件'D:\ VS2015 \ DevilsTowerMVC \ App_Data \ aspnet-DevilsTowerMVC-20180327093314.mdf'附加为数据库'aspnet-DevilsTowerMVC-20180327093314'。
我的计算机上安装了SQL Server 2012(11.0.5388.0)。该项目是使用VS 2015创建的。我在SO上看到了similar question,但这没有提供明确的答案。
我刚刚在VS 2015中创建了另一个ASP.NET MVC 5应用程序,并且登录正常运行(例如SQL Server 12.00.2000)。所以我不明白我现有的项目如何神秘地还原到旧版本?
根据我的研究,SQL Server 2016的内部数据库版本号为852,而SQL Server 2014的内部数据库版本号为782。我安装的SQL Server 2012的内部数据库版本号为706,所以我不知道为什么在错误消息中提到“ 782”。
(Q1)如果我不能降级,那么我唯一的选择可能是安装SQL Server 2016 Express?这是正确的吗?要正确执行什么步骤?如果没有,是否有办法“重置”它-新创建的项目就可以了吗?
(第2季度)如何将其转换为在SSMS中使用常规的基于非文件的常规SQL Server数据库?
我的web.config:
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-DevilsTowerMVC-20180327093314.mdf;Initial Catalog=aspnet-DevilsTowerMVC-20180327093314;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb"/>
</parameters>
</defaultConnectionFactory>
</entityFramework>
更新1
我从here下载了SQL Server 2016 SP1 Express Edition。我选择了“下载媒体/ LocalDB”选项。它似乎已正确安装。但是,当我在Server Explorter中选择DefaultConnection并单击“刷新”时,会得到与以前完全相同的错误。我尝试了连接字符串中的所有组合,例如:(LocalDb)
,(LocalDb)\v11.0
和(LocalDb)\MSSQLLocalDB
。
当我查看C:\ Windows \ SysWOW64文件夹时,我看到仍安装了SQLServerManager11.msc配置管理器。
更新2
我从App_Data文件夹中删除了.mdf文件,并尝试通过注册新用户来重新创建它。创建了DefaultConnection.mdf文件,但是当我尝试在Server Explorer中添加它时,却得到了与以前相同的版本错误消息。任何人都可以提出赎回项目登录系统的方法吗?
答案 0 :(得分:0)
1)很遗憾,您不能降级,您必须获得相同的版本。 2)据我所知,您可以使用.mdf文件还原数据库,但从技术上讲,它们都应基于文件。即使您拥有mdf文件,也可以将其还原,然后相应地更改连接字符串。
答案 1 :(得分:0)
我通过Yair M对this question的回答设法解决了这个问题。
我首先使用控制面板->程序和功能,以物理方式卸载了与我的SQL Server 2012版本相对应的v11.0之外的所有版本的LocalDb。
然后我使用命令行发布了以下命令:
sqllocaldb删除“ v11.0”
sqllocaldb创建“ v11.0”
这解决了当我尝试注册新用户时擦拭而不重新创建基于文件的LocalDb实例的问题。
这时我可以注册一个新用户,而不会出现任何错误消息。但是,我想离开LocalDB。
因此,我在SSMS中创建了一个空数据库,并将.mdf文件附加到该数据库。我更新了连接字符串,以使用实际的数据库和集成安全性(用于本地开发)。运行该应用程序时出现一些权限错误,但能够通过创建一个新用户并给予其读写访问权限来解决此问题。
<add name="DefaultConnection"
connectionString="Initial Catalog=DevilsTower;Data Source=Development;Integrated Security=SSPI;"
providerName="System.Data.SqlClient" />