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

Posted

技术标签:

【中文标题】数据库无法打开,因为它是版本 706。此服务器支持版本 655 及更早版本。不支持降级路径【英文标题】:The database cannot be opened because it is version 706. This server supports version 655 and earlier. A downgrade path is not supported 【发布时间】:2013-08-23 05:19:08 【问题描述】:

我的App_Data 文件夹中有数据库文件,我的网络配置看起来像这样

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <connectionStrings>
    <add name="TicketsConnectionString" 
         connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Tickets.mdf;Integrated Security=SSPI;User Instance=True;" 
   providerName="System.Data.SqlClient" />

  </connectionStrings>
  <system.web>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime targetFramework="4.5"/>
  </system.web>
</configuration>

我有 Default.aspx 页面

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:TextBox ID="LastName" runat="server"></asp:TextBox>
        <asp:TextBox ID="FirstName" runat="server"></asp:TextBox>
        <asp:TextBox ID="Phone1" runat="server"></asp:TextBox>
        <asp:TextBox ID="Phone2" runat="server"></asp:TextBox>
        <br />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        <br />
        <br />
        <asp:Label ID="DisplayMessage" runat="server" style="color: #FF0000" Visible="false" />
        <br />
        <br />
        <br />
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TicketsConnectionString %>" SelectCommand="SELECT * FROM [Employee]" DeleteCommand="DELETE FROM [Employee] WHERE [EmpID] = @EmpID" InsertCommand="INSERT INTO [Employee] ([LastName], [FirstName], [Phone1], [Phone2]) VALUES (@LastName, @FirstName, @Phone1, @Phone2)" UpdateCommand="UPDATE [Employee] SET [LastName] = @LastName, [FirstName] = @FirstName, [Phone1] = @Phone1, [Phone2] = @Phone2 WHERE [EmpID] = @EmpID">
            <DeleteParameters>
                <asp:Parameter Name="EmpID" Type="Int32" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="LastName" Type="String" />
                <asp:Parameter Name="FirstName" Type="String" />
                <asp:Parameter Name="Phone1" Type="String" />
                <asp:Parameter Name="Phone2" Type="String" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="LastName" Type="String" />
                <asp:Parameter Name="FirstName" Type="String" />
                <asp:Parameter Name="Phone1" Type="String" />
                <asp:Parameter Name="Phone2" Type="String" />
                <asp:Parameter Name="EmpID" Type="Int32" />
            </UpdateParameters>
        </asp:SqlDataSource>

        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" DataKeyNames="EmpID" DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="Vertical">
            <AlternatingRowStyle BackColor="#CCCCCC" />
            <Columns>
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                <asp:BoundField DataField="EmpID" HeaderText="EmpID" InsertVisible="False" ReadOnly="True" SortExpression="EmpID" />
                <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
                <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
                <asp:BoundField DataField="Phone1" HeaderText="Phone1" SortExpression="Phone1" />
                <asp:BoundField DataField="Phone2" HeaderText="Phone2" SortExpression="Phone2" />
            </Columns>
            <FooterStyle BackColor="#CCCCCC" />
            <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
            <SortedAscendingCellStyle BackColor="#F1F1F1" />
            <SortedAscendingHeaderStyle BackColor="#808080" />
            <SortedDescendingCellStyle BackColor="#CAC9C9" />
            <SortedDescendingHeaderStyle BackColor="#383838" />
        </asp:GridView>

    </div>
    </form>
</body>
</html>

还有一个 Default.aspx.cs 页面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public partial class _Default : System.Web.UI.Page


    protected void Page_Load(object sender, EventArgs e)
    
        GridView1.DataBind();
    

    string connectionString = ConfigurationManager.ConnectionStrings["TicketsConnectionString"].ConnectionString;

    protected void Button1_Click(object sender, EventArgs e)
    


        DataSet ds = new DataSet();
        SqlConnection con = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand("InsertIntoEmployee", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@LastName", SqlDbType.NVarChar).Value = LastName.Text;
        cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar);
        cmd.Parameters.Add("@Phone1", SqlDbType.NVarChar);//SqlDbType.NVarChar allowed to insert Russian letters
        cmd.Parameters.Add("@Phone2", SqlDbType.NVarChar);
        cmd.Parameters["@LastName"].Value = LastName.Text;
        cmd.Parameters["@FirstName"].Value = FirstName.Text;
        cmd.Parameters["@Phone1"].Value = Phone1.Text;
        cmd.Parameters["@Phone2"].Value = Phone2.Text;
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();



        DisplayMessage.Text = "Запись добавлена.";
            DisplayMessage.Visible = true;

    

它会抛出这个错误

The database 'G:\SITES\WEBSITE6\APP_DATA\TICKETS.MDF' cannot be opened because it is version 706. This server supports version 655 and earlier. A downgrade path is not supported.
Could not open new database 'G:\SITES\WEBSITE6\APP_DATA\TICKETS.MDF'. CREATE DATABASE is aborted.
An attempt to attach an auto-named database for file G:\sites\WebSite6\App_Data\Tickets.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: The database 'G:\SITES\WEBSITE6\APP_DATA\TICKETS.MDF' cannot be opened because it is version 706. This server supports version 655 and earlier. A downgrade path is not supported.
Could not open new database 'G:\SITES\WEBSITE6\APP_DATA\TICKETS.MDF'. CREATE DATABASE is aborted.
An attempt to attach an auto-named database for file G:\sites\WebSite6\App_Data\Tickets.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

Source Error: 


Line 14:     protected void Page_Load(object sender, EventArgs e)
Line 15:     
Line 16:         GridView1.DataBind();
Line 17:     
Line 18: 

我认为连接字符串有问题,但对我来说一切都很好,我的问题是如何解决这个问题?

【问题讨论】:

升级您的 SQL Server 版本或在您使用的同一版本的 SQL Server 中重新创建数据库。 它是昨天在同一个数据库上创建的,它是 SQL Server Express 2012。我刚刚将 .mdf 文件从数据库数据文件夹复制到我的项目文件夹中并更改了ConnectionSting 您将数据库附加到 SQL Server 2012 以外的其他东西。 发现我是在 SQL server express 2012 中创建的,但是当我在 Visual Studio 中运行我的应用程序时,出于某种原因,将此 mdf 文件连接到 Sql server express 2008。我不知道为什么 Data Source=.\SQLEXPRESS 将您指向命名实例 SQLEXPRESS,它可能是基于 SQL Server 2008 的。 【参考方案1】:

版本 706 是来自 Sql Server 2012 的数据库文件 版本 665 是来自 Sql Server 2008R2 的数据库文件(发布 SP1 ?)

http://conceptdev.blogspot.com/2009/04/mdf-cannot-be-opened-because-it-is.html

【讨论】:

【参考方案2】:

这是经过测试的解决方案,首先在 SQL Server Management Studio 中连接两个服务器,然后运行第一个代码块

--1st Run this (One Time)
EXEC sp_addlinkedserver  
@server='YOUR_SERVER_IP', -- here you can specify the name of the linked server  
@srvproduct='',       
@provider='sqlncli', -- using SQL Server Native Client  
@datasrc='YOUR_SERVER_IP',   -- add here your server name  
@location='',  
@provstr='',  
@catalog='DATABASE_NAME'

然后单独运行

SELECT TOP(100) * 
FROM LOCAL_TABLE A, [YOUR_SERVER_IP].DATABASE_NAME.dbo.TABLE_NAME C
WHERE A.ID=C.ID

【讨论】:

【参考方案3】:

如果您尝试附加到本地数据库,请使用 LocalDb(自 vs2012、sql2012 起),即:

Data Source=(LocalDB)\v11.0;AttachDbFilename= (etc)

【讨论】:

【参考方案4】:

我确定问题是aspnetdb.mdf 无法打开。

有时此文件会损坏。问题是我无法验证登录页面。

删除(替换)我的登录表单控件后,问题就解决了。

这是因为来自asp.net 的控制使用aspnet 成员资格。我用 CSS 样式替换了我的登录控件(使用 javascript)并删除了所有相关文件并解决了它。

我希望这对某人有所帮助。

【讨论】:

你真的应该发布你自己的问题。这里的这个已经有几年了。您可以链接回这个问题,说明为什么这不适用于您,或者有什么不同,以及您实际尝试过的任何其他内容。欢迎来到 SO,祝您的问题好运!

以上是关于数据库无法打开,因为它是版本 706。此服务器支持版本 655 及更早版本。不支持降级路径的主要内容,如果未能解决你的问题,请参考以下文章

706版本打不开。本服务器支持662及更早版本。不支持降级路径

数据库无法打开,因为它是 655 版本

SQL2005附加数据库失败

无法解决“此版本的 IntelliJ IDEA 的 Android 支持插件无法打开此项目,请使用 4.1 或更高版本重试。”

Visual Studio 2013 无法正常打开项目文件

linux无法访问windows samba 提示: Firefox 不知道如何打开此地址,因为协议 (smb) 未和任何程序关联。