SQL Server Express与.mdf文件的连接

时间:2018-07-03 23:57:18

标签: asp.net sql-server asp.net-identity sql-server-express localdb

两部分问题。

我已经使用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'。

enter image description here

我的计算机上安装了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中添加它时,却得到了与以前相同的版本错误消息。任何人都可以提出赎回项目登录系统的方法吗?

2 个答案:

答案 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" />