【问题标题】:The database cannot be opened because it is version 782. This server supports version 706 and earlier. A downgrade path is not supported数据库无法打开,因为它是版本 782。此服务器支持版本 706 及更早版本。不支持降级路径
【发布时间】:2014-10-13 18:36:25
【问题描述】:

我使用 SQL Server 2014 Express 创建了一个示例数据库,并将其添加到我的 Windows 窗体解决方案中。当双击它打开我得到这个错误。

无法打开数据库,因为它是 782 版本。此服务器 支持版本 706 及更早版本。不支持降级路径

我使用的是 Visual Studio 2013。我真的不明白我使用的是 Microsoft 产品的两个最新版本,它们不兼容。我错过了什么吗?我怎样才能打开这个数据库?

【问题讨论】:

  • 您需要将 Visual Studio 指向您的 SQL Server 2014 实例。不是两者不兼容,而是Visual Studio默认使用的是2012的实例,不支持2014以后的数据库。之所以默认使用2012的原因:SQL Server 2014没有'在 Visual Studio 2013 发布时不存在。
  • @AaronBertrand 谢谢。如何将 VS 指向我的 SQL Server 2014。是否有任何链接可以指导?
  • 当然,停止将 Visual Studio(和您的应用程序)指向一个文件(使用 AttachDBFileName)。假设数据库已经附加到您的本地 .\SQLEXPRESS 实例,只需更改连接字符串以指向该服务器 (Data Source=.\SQLEXPRESS;Initial Catalog=OMERDENEME;...) 和 stop using AttachDBFileName

标签: sql-server visual-studio


【解决方案1】:

尝试更改 工具 > 选项 > 数据库工具 > 数据连接 > SQL Server 实例名称

VS2013 的默认值为(LocalDB)\v11.0

例如,更改为 (LocalDB)\MSSQLLocalDB 似乎有效 - 不再出现版本 782 错误。

【讨论】:

  • 我在使用 Visual Studio 2013 Express for Web and Entity Framework 6 时遇到了类似的问题。EF 自动创建了 MDF 文件,但是在使用 (LocalDB)\v11.0 时我无法从 VS 连接。将服务器名称更改为 (LocalDB)\MSSQLLocalDB 使有关版本 # 的错误消失。
  • 我还必须将 web.config 文件中的连接字符串更改为 (LocalDB)\MSSQLLocalDB
  • 在 VS Studio 2015 中,默认为 (LocalDB)\MSSQLLocalDB。所以,这在这种情况下没有帮助
  • 更改上述设置后我不得不重新启动 Visual Studio
  • @Kun-yaoWang,上面有用Bee提到的评论对我有用,我正在使用VS 2015。
【解决方案2】:

尝试更改兼容性级别,对我有用。

验证它是什么级别

USE VJ_DATABASE;
GO
SELECT compatibility_level
FROM sys.databases WHERE name = 'VJ_DATABASE';
GO

然后让它与旧版本兼容

ALTER DATABASE VJ_DATABASE
SET COMPATIBILITY_LEVEL = 110;   
GO
  • 100 = Sql Server 2008
  • 110 = Sql Server 2012
  • 120 = Sql Server 2014

默认情况下,Sql Server 2014 会将 db 版本兼容性更改为仅 2014,使用 @@ version 你应该可以知道 Sql Server 是哪个版本。

然后运行上面的命令将其更改为您拥有的版本。

附加步骤:确保您查看数据库的可访问性未重置,通过右键单击文件夹和数据库的属性来执行此操作。 (确保您拥有权限,以免访问被拒绝)

【讨论】:

    【解决方案3】:

    对我来说,使用 codedom 提供的解决方案不起作用。这里只能更改现有数据库的兼容版本。

    但实际问题在于,由于存储格式的变化,内部数据库版本不匹配。

    查看有关 SQL Server 版本及其内部数据库版本和数据库兼容性级别的更多详细信息here 因此,如果您使用SQL Server 2012 Express 或更低版本创建数据库会很好。 或者开始使用 Visual Studio 2015 Preview。

    【讨论】:

      【解决方案4】:

      这个解决方案解决了我的问题:(来自:https://msdn.microsoft.com/en-us/library/ms239722.aspx

      从数据连接节点永久附加数据库文件 (.mdf)

      1. 打开数据连接的快捷菜单并选择添加新连接。

        添加连接对话框出现。

      2. 选择更改按钮。

        更改数据源对话框出现。

      3. 选择 Microsoft SQL Server 并选择 确定 按钮。

        添加连接对话框再次出现,Microsoft SQL Server (SqlClient)显示在数据源文本框中。

      4. 在“服务器名称”框中,键入或浏览到 SQL Server 本地实例的路径。您可以输入以下内容:

        • “。”用于您计算机上的默认实例。
        • “(LocalDB)\v11.0”用于 SQL Server Express LocalDB 的默认实例。
        • ".\SQLEXPRESS" 用于 SQL Server Express 的默认实例。

        有关 SQL Server Express LocalDB 和 SQL Server Express 的信息,请参阅Local Data Overview

      5. 选择使用 Windows 身份验证使用 SQL Server 身份验证

      6. 选择附加数据库文件浏览,然后打开现有的 .mdf 文件。

      7. 选择确定按钮。

        新数据库出现在服务器资源管理器中。在您明确将其分离之前,它将保持与 SQL Server 的连接。

      【讨论】:

      • 这个解决方案对我有用。我在tool-option-database tools->data connection--> sql server name =(LocalDB)\MSSQLLocalDB中更改了我的Vs2012默认连接设置。然后按照上面的步骤。在第 4 步中,我将 ny sql 2014 实例名称输入为 (LocalDB)\MSSQLLocalDB。一切都很好。谢谢兄弟。
      【解决方案5】:

      另一个解决方案是当您从例如“导出”数据库时将数据库迁移到例如 2012。 Sql Server manager 2014。这是在菜单任务->右键单击数据库时生成脚本中完成的。只需按照以下说明操作:

      https://www.mssqltips.com/sqlservertip/2810/how-to-migrate-a-sql-server-database-to-a-lower-version/

      它会生成一个包含所有内容的脚本,然后在您的 SQL 服务器管理器中生成一个脚本,例如2012 运行指令中指定的脚本。我已经成功地进行了测试。

      【讨论】:

        【解决方案6】:

        我使用 VS 2017。默认情况下 SQL Server 实例名称是 (LocalDB)\MSSQLLocalDB。 但是,如@user3390927 的回答一样,将数据库的兼容性级别降级为 110,我可以在 VS 中附加数据库文件,选择服务器名称为“localhost\SQLExpress”。

        【讨论】:

          猜你喜欢
          • 2016-08-25
          • 1970-01-01
          • 2013-08-23
          • 2013-11-22
          • 1970-01-01
          • 1970-01-01
          • 2020-06-26
          • 2013-07-20
          • 1970-01-01
          相关资源
          最近更新 更多