The database ‘xxx.mdf‘ cannot be opened because it is version 904. This server supports version 655

文章讲述了在开发WebAPI项目中遇到的数据库连接问题,由于VS2019内置的LocalDB版本过低,与数据库mdf文件版本不匹配,导致连接失败。作者通过升级LocalDB到SQLServer2019,创建新实例并修改连接字符串,最终成功解决了连接问题。
摘要由CSDN通过智能技术生成

最近的工作与web api有关,牵涉到了数据库,使用C#编写,在链接数据库

public static string connectionString =
               @"Data Source=.\SQLEXPRESS;AttachDbFilename= \自己的路径\App_Data\xxx.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection Conn = new SqlConnection(DatabaseParm.connectionString))
{
   Conn.Open();
}

时出现如下错误

出现这个现象,是因为Visual Studio 2019  内置的是SQL Server 2016 Express LocalDB,而数据库mdf文件用的是SQL Server 2019 LocalDB,vs中的localdb版本太低了,那就重新安装了SQL Server 2019 数据库(这应该可以不用安装,可以先进行下面的步骤,如果还是不行,那就再安装这个数据库吧)。安装过程已有,这里不再赘述,链接如下:

SQL Server 2019 数据库的安装步骤 - 知乎

安装好后,运行到那一行代码,仍然报出这个错误。为什么呢?因为VS 2019用的仍然是内置的LocalDB,不是本机的SQL Server。那就替换VS的LocalDB吧。

  1. 下载安装SQL Server Express:

https://download.microsoft.com/download/7/f/8/7f8a9c43-8c8a-4f7c-9f92-83c18d96b681/SQL2019-SSEI-Expr.exe

下载之后,双击exe文件,点下载介质

在弹出的页面中,选择LocalDB(第三个),点击下一步下载SqlLocalDB.msi

 

下载后安装,安装后在程序和工程中可以看到:

 SQL Server 2019 LocalDB是刚刚新安装的,2016 LocalDB是vs2019内置的。

2.启动 LocalDB 并连接到 LocalDB:

首次启动2019 LocalDB需要创建实例:

启动cmd,在命令行中输入如下代码

REM Create an instance of LocalDB
"C:\Program Files\Microsoft SQL Server\150\Tools\Binn\SqlLocalDB.exe" create LocalDBApp1
REM Start the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\150\Tools\Binn\SqlLocalDB.exe" start LocalDBApp1
REM Gather information about the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\150\Tools\Binn\SqlLocalDB.exe" info LocalDBApp1

然后在文件夹C:\Users\用户名\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances会多出一个实例(AppData若是没有,可能被隐藏了):

 接下来就是链接数据库了,VS2019中打开服务资源管理器,找到数据连接右键-》添加连接,

数据源选择Microsoft SQL Server (SqlClient),服务器名为(LocalDb)\LocalDBApp1,附加数据库文件就是自己的mdf文件

点击测试连接,出现测试连接成功弹窗,然后点确定,这里我们就可以看数据库的结构了。

然后我继续运行代码,到那个位置仍报错,仔细研究下代码 

public SqlConnection(string connectionString);

connectionString:  用于打开 SQL Server 数据库的连接。

再看connectionString中参数的设定项Data Source、AttachDbFilename、Integrated Security、User Instance和界面添加连接是一样的(添加连接界面中点开高级选项)

继续修改代码:

public static string connectionString =
                @"Data Source=(LocalDB)\LocalDBApp1;AttachDbFilename=\自己的路径\App_Data\xxx.mdf;Integrated Security=True;User Instance=False";
using (SqlConnection Conn = new SqlConnection(DatabaseParm.connectionString))
{
   Conn.Open();
}

 运行正常,大功告成!

如果对你有帮助,请不要吝啬你的赞啊👍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值