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" />
两部分问题。
我已经使用 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" />