首页 文章

无法打开,因为它是版本852.此服务器支持版本782及更早版本

提问于
浏览
7

我正在使用Visual Studio 2017和SQL Server 2014.在将数据库文件附加到Visual Studio时,我收到此错误:


Adding database connection

升级文件后,我使用了这个连接字符串

<connectionStrings>
    <add name="con" 
         connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\binaaelmamorra.mdf;Integrated Security=True;Connect Timeout=30"/>
</connectionStrings>

它在我的机器上工作正常,但在客户端机器上,弹出一个错误说

无法打开,因为它是版本852.此服务器支持版本782及更早版本

虽然我在客户端安装了SQL Server 2016本地数据库,但我仍然无法摆脱它 .

我的第二个问题是:数据库文件不兼容的SQL Server的当前实例是什么?

Pic 1

enter image description here

3 回答

  • 5

    版本852是SQL Server 2016,版本782是SQL Server 2014.可以找到版本的良好参考at this Microsoft page .

    根据您的解释,这应该是版本782 DB . 由于它是版本852 DB,这意味着它是使用SQL Server 2016而不是SQL Server 2014升级的 . 因此,您应该检查在本地/ dev机器上运行的所有SQL Server版本,以确认只有SQL Server 2014是在使用中,而不是(可能)由VS 2017安装的SQL Server 2016 .

    此外,听起来您的最终用户版本是2014年,而不是2016年 . 如果当前数据库是SQL Server 2014模式数据库,这可能是一个问题 . 在连接数据库之前尝试显式连接到TempDB . (注意:这是我遇到2014/2016不兼容时必须要做的事情,但我不记得实际问题是什么 . )

  • 3

    如果您希望项目生成可以在客户端计算机上附加的SQL Server 2014数据库,则必须在计算机上创建服务器实例 . 为此,请以管理员模式打开命令行,并在12.0版SQL Server 2014中输入命令“ sqllocaldb create v12.0 12.0 ". This creates a server instance called " v12.0” .

    如果尚未启动服务器,则必须使用命令“ sqllocaldb start v12.0 ”启动服务器 .

    现在你必须像这样改变你的conectionString:

    <connectionStrings>
        <add name="con" 
             connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\binaaelmamorra.mdf;Integrated Security=True;Connect Timeout=30"/>
    </connectionStrings>
    

    也许您已经为app.config添加了一些参数

    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="v12.0" />
          </parameters>
    </defaultConnectionFactory>
    
  • 1

    您的计算机上似乎有多个不同版本的SQL Server实例 .

    对于“完整版”版本(Express和up),您可以通过查看SQL Server配置管理器来查看它们的版本:

    对于SQL Server的"LocalDB"版本(面向开发人员的版本),您可以使用 sqllocaldb 命令行工具 .

    使用此命令概述机器上的内容:

    C:\> sqllocaldb i
    
    MSSQLLocalDB
    v11.0
    

    然后,您可以使用details命令检查各个实例:

    C:\> sqllocaldb i mssqllocaldb
    
    Name:               mssqllocaldb
    Version:            13.1.4206.0
    Shared name:
    Owner:              MSE-PC-02\Marc
    Auto-create:        Yes
    State:              Stopped
    Last start time:    27.08.2017 12:24:45
    Instance pipe name:
    
    
    C:\> sqllocaldb i v11.0
    Name:               v11.0
    Version:            11.0.3000.0
    Shared name:
    Owner:              MSE-PC-02\Marc
    Auto-create:        Yes
    State:              Stopped
    Last start time:    26.08.2017 15:41:18
    Instance pipe name:
    

    因此,这告诉您有两个SQL Server LocalDB实例可用 - mssqllocaldb 是版本13.1(SQL Server 2016),而 v11.0 实例是版本11.0(SQL Server 2012) .

    因此,如果要将 .mdf 文件附加到这两个实例中的任何一个,您只需要 pick the right one 以使其能够使用您想要的版本 . 一旦你将数据库文件发送到更新版本的SQL Server(如2016 - 内部数据库版本852),你就可以回去了 - 没有办法分离/附加,备份/恢复或其他方式来获取这些二进制文件文件到旧版本的SQL Server . 您必须将新数据库文件的结构(可能还有数据)编写为 .sql 文件,然后在旧版本上运行 .

相关问题