SQL 到 .mdf 文件的服务器快速连接

SQL Server Express connection to .mdf file

两部分问题。

我已经使用 VS 2015 Update 3 创建了一个 ASP.NET MVC 5 应用程序。我在本地计算机上完成该项目有很多方法。突然,我无法再通过 SQL Server Object Explorer 连接到 .mdf 数据库文件并收到以下错误:

The database 'aspnet-DevilsTowerMVC-20180327093314' cannot be opened because it is version 852. This server supports version 782 and earlier. A downgrade path is not supported. Could not open new database 'aspnet-DevilsTowerMVC-20180327093314'. CREATE DATABASE is aborted. Cannot attach the file 'D:\VS2015\DevilsTowerMVC\App_Data\aspnet-DevilsTowerMVC-20180327093314.mdf' as database 'aspnet-DevilsTowerMVC-20180327093314'.

我的机器上安装了 SQL Server 2012 (11.0.5388.0)。该项目是使用 VS 2015 创建的。我在 SO 上看到了 similar question 但这并没有提供明确的答案。

我刚刚在 VS 2015 中创建了另一个 ASP.NET MVC 5 应用程序并且登录工作正常(说 SQL 服务器 12.00.2000)。所以我不明白我现有的项目是如何神秘地恢复到旧版本的?

根据我的研究,SQL Server 2016 的内部数据库版本号为 852,SQL Server 2014 的内部数据库版本号为 782。我安装的 SQL Server 2012 的内部数据库版本号为706,所以我不知道为什么在错误消息中提到'782'。

(Q1) 如果我无法降级,那么我唯一的选择可能是安装 SQL Server 2016 Express?这是正确的吗?正确执行此操作的步骤是什么?如果没有,有没有办法 'reset' - 新创建的项目工作正常?

(Q2) 如何将其转换为在 SSMS 中使用常规的非基于文件的 SQL 服务器数据库?

我的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。我 select 编辑了下载 Media/LocalDB 选项。它似乎安装正确。但是,当我 select Server Explorter 中的 DefaultConnection 并点击刷新时,我得到与以前完全相同的错误。我尝试了连接字符串中的所有组合,例如:(LocalDb)(LocalDb)\v11.0(LocalDb)\MSSQLLocalDB.

当我查看 C:\Windows\SysWOW64 文件夹时,我看到 SQLServerManager11.msc 配置管理器仍然安装。

更新 2

我从 App_Data 文件夹中删除了 .mdf 文件,并尝试通过注册新用户重新创建它。创建了一个 DefaultConnection.mdf 文件,但是当我尝试在服务器资源管理器中添加它时,我收到了与以前相同的版本错误消息。谁能建议一种兑换项目登录系统的方法?

1) 遗憾的是您无法降级,您必须获得相同的版本。 2) 据我所知,您可以使用 .mdf 文件恢复数据库,但从技术上讲,它们都应该是基于文件的。如果您有 mdf 文件,您仍然可以恢复它,然后相应地更改您的连接字符串。

借助 Yair M 对 this question 的回答,我设法解决了这个问题。

我首先使用控制面板 --> 程序和功能卸载了除 v11.0 之外的所有 LocalDb 版本,该版本对应于我的 SQL Server 2012 版本。

然后使用命令行,我发出了以下命令:

sqllocaldb delete "v11.0"

sqllocaldb create "v11.0"

这解决了当我尝试注册新用户时基于文件的 LocalDb 实例被擦除而不是重新创建的问题。

此时我可以注册一个新用户而不会出现任何错误消息。但是,我想离开 LocalDB。

因此,我在 SSMS 中创建了一个空数据库并将 .mdf 文件附加到其中。我更新了连接字符串以使用实际的数据库和集成安全性(用于本地开发)。我在 运行 应用程序时遇到了一些权限错误,但能够通过创建新用户并授予其读写权限来解决这个问题。

<add name="DefaultConnection" 
  connectionString="Initial Catalog=DevilsTower;Data Source=Development;Integrated Security=SSPI;" 
    providerName="System.Data.SqlClient" />