代码之家  ›  专栏  ›  技术社区  ›  IrishChieftain

SQL Server到.mdf文件的快速连接

  •  0
  • IrishChieftain  · 技术社区  · 6 年前

    两部分的问题。

    我使用VS2015更新3创建了一个ASP.NET MVC 5应用程序。我对本地机器上的项目很在行。突然,我无法再通过sql server对象资源管理器连接到 .mdf 数据库文件并获取以下错误:

    无法打开数据库“aspnet-devilstowermvc-20180327093314”,因为它是852版。此服务器支持782及更早版本。不支持降级路径。无法打开新数据库“aspnet-devilstowermvc-20180327093314”。创建数据库被中止。无法将文件“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创建的。我看到一个 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”。

    (第一季度) 如果我不能降级,那么我唯一的选择可能是安装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

    我从下载了SQL Server 2016 SP1速成版 here .我选择了download media/localdb选项。它似乎安装正确。但是,当我在服务器资源管理器中选择defaultconnection并点击refresh时,得到的错误与之前完全相同。我尝试了连接字符串中的所有组合,例如: (LocalDb) ,请 (LocalDb)\v11.0 (LocalDb)\MSSQLLocalDB 是的。

    当我在c:\ windows\syswow64文件夹中查找时,我看到sqlservermanager11.msc配置管理器仍在安装。

    更新2

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

    2 回复  |  直到 6 年前
        1
  •  0
  •   Aegletes    6 年前

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

        2
  •  0
  •   IrishChieftain    6 年前

    我借助于雅尔·M·托的回答设法解决了这个问题 this question 是的。

    首先,我使用控制面板--gt;程序&功能从物理上卸载了所有版本的localdb,除了v11.0版本,它与我的sql server 2012版本相对应。

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

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