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

Bil*_*med 10 c# sql-server sql-server-2014 sql-server-2016 visual-studio-2017

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

"添加数据库连接"

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

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

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

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

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

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

图1 在此输入图像描述

Abd*_*rif 9

这对我有用:

  1. 打开命令提示符并键入:

    cd "C:\Program Files\Microsoft SQL Server\130\LocalDB\Binn"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在 cmd 中运行此命令以删除本地数据库:

    SqlLocalDB.exe delete "MSSQLLocalDB"
    
    Run Code Online (Sandbox Code Playgroud)

    (或者SqlLocalDB.exe stop "MSSQLLocalDB",如果您遇到仍在运行的实例错误)

  3. 然后输入此命令以创建本地 db 的新更新实例:

    SqlLocalDB.exe create "MSSQLLocalDB"
    
    Run Code Online (Sandbox Code Playgroud)

参考:https : //www.youtube.com/watch?v=bCjc9Mmx-bM


mar*_*c_s 8

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

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

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

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

C:\> sqllocaldb i

MSSQLLocalDB
v11.0
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用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:
Run Code Online (Sandbox Code Playgroud)

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

因此,如果要将.mdf文件附加到这两个实例中的任何一个,您只需选择正确的文件即可使其与您想要的版本一起使用.一旦你将一个数据库文件"升级"到更新版本的SQL Server(如2016年 - 内部数据库版本852),你就永远不会回去 - 没有办法分离/附加,备份/恢复或其他方式来获取那些二进制文件到旧版本的SQL Server.您必须将新数据库文件的结构(可能还有数据)编写为.sql文件,然后在旧版本上运行.

  • @PKirby:这是由连接字符串定义的 - 如果您有“Data Source=(LocalDb)\v11.0” - 它将使用“v11.0”实例;如果您有“Data Source=(LocalDb)\MSSQLLocalDb”,它将使用其他实例 (2认同)

Lau*_*gil 7

版本 852 是 SQL Server 2016,版本 782 是 SQL Server 2014。可以在此页面上找到版本的良好参考。

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

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