当前位置: 代码迷 >> 综合 >> Visual Studio连接数据库出现“SQL Network Interfaces,error: 50-发生了LocalDatabase Runtime”的解决方案
  详细解决方案

Visual Studio连接数据库出现“SQL Network Interfaces,error: 50-发生了LocalDatabase Runtime”的解决方案

热度:30   发布时间:2023-12-16 11:41:02.0

!本贴重点看这里!

针对在VS中连接数据库出现“SQL Network Interfaces,error: 50-发生了LocalDatabase Runtime”相关的系统报错、异常

主要问题在于本机没有相关的数据库(LocalDB)实例

在命令提示符中使用sqllocaldb i查看相关的localdb实例,一般只有MSSQLLocalDB也可使用,或者根据自己使用的VS版本创建新的实例(VS2017/2019一般使用v13.0,v11.0不可用

实例创建命令:sqllocaldb create v13.0

PS:如果实例损坏,使用sqllocaldb delete 相关实例名称,再创建新的即可

创建好实例后,在代码的App.config以及cs源码文件中找到相关代码(Data Source)进行修改即可?

@"Data Source=(LocalDB)\v13.0;AttachDbFilename=|DataDirectory|\数据库文件名字.mdf;Integrated Security=True;Connect Timeout=30";

另外查看VS相关数据库问题,先查两个地方:“视图--服务器资源管理器--数据连接”“视图--其他窗口--数据源”,数据库和源重新匹配下


解决过程

最近研究C#的数据库使用,没想到真就万事开头难,直接卡在最开始:数据库没法用!!!

由于是自学,网上找了很多的案例代码,一般来说都是可以直接跑,但偏偏这次连效果都看不了!(气)

代码运行中出现了一个异常?

System.Data.SqlClient.SqlException:"在与SQL Server建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且SQL Server 已配置为允许远程连接。(provider: SQL Network Interfaces,error: 50-发生了LocalDatabase Runtime错误。指定的LocalDB 实例不存在。


自行尝试

考虑到和数据库相关的问题,无非就是源码bug/连接bug/数据库文件bug,代码和数据库文件都没动过,所以肯定还是连接出了问题。

VS的数据库使用有两个方面,一个是数据连接,另一个是数据源匹配,所以我从这两个角度入手解决问题。

以下是我的解决方法(使用工具:VS2017):

1. 在“视图--服务器资源管理器--数据连接”中将原始的mdf文件删除(文件匹配本地文件夹位置,因此需要重新添加),添加代码相关的数据库mdf文件,然后给我弹出了这个?

连接字符串中的数据源值指定未安装的SQL Server 的实例。要解决此问题,可选择安装匹配的SQL Server 实例或修改连接字符串中的数据源值。

此路没通,那换一条好了?

2. 在解决方案资源管理器中将原始的mdf和xsd文件(数据库匹配的数据源文件)都删掉,然后“视图--其他窗口--数据源”添加新的连接,一路下一步,在新建连接中选择匹配的数据库

emmmmm然后它卡住了,3分钟后给我弹了个这个?

未能打开到以下数据库的连接:
“尝试附加到数据库失败并出现以下信息:在与SQL Server建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server已配置为允许远程连接。(provider: SQL Network Interfaces, error:50-发生了Local Database Runtime错误。指定的 LocalDB实例不存在。)”请检查连接并重试。

这个error:50有那么点熟悉啊?

3. VS重装

会不会是电脑系统的问题导致VS运行报错呢(之前有过类似的经历?),用的2017听说还是bug很多的一代,干脆一不做二不休,上虚拟机整个19的好了

漫长的安装过程......

由于是虚拟机简装,使用数据库这几个是必须要装的,就算之前没装跑代码系统后面会提醒安装:

代码跑完依旧是相同的问题(气)?


成功解决

(参考链接?https://www.cnblogs.com/summit7ca/p/4559694.html )

从网上看了很多关于VS连接数据库的方法,但代码使用的是mdf数据库文件直接连接,网上相关的内容很少,因此只能根据部分网上大佬的建议瞎摸索?

有一个关键字出现了很多次:LocalDB。

LocalDB是SqlServer Express版本的轻量级版本,植入VS供数据库的相关操作。既然要用localdb数据库肯定需要相关的配置文件,在App.config中我找到了!熟悉的LocalDB!!!

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections></configSections><connectionStrings><add name="WindowsFormsApplication14.Properties.Settings.ConnectionString"connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\数据库文件名字.mdf;Integrated Security=True;Connect Timeout=30"providerName="System.Data.SqlClient" /></connectionStrings><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup>
</configuration>
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\数据库文件名字.mdf;Integrated Security=True;Connect Timeout=30"

(注意这里的v11.0是解决问题的关键!!!)

我一直以为这个v11.0只是版本的意思,它还指代码所用实例!!!搞了那么久,实际问题就在于电脑本身没有相关的实例?

在命令提示符中使用sqllocaldb查看localdb的相关属性,使用sqllocaldb i查看相关实例,一般来说只有MSSQLLocalDB,因此需要自己创建,源码的v11.0在VS2017及往后版本是不能使用的

使用sqllocaldb create v13.0创建v13.0实例,然后输入sqllocaldb i就可以看见实例创建成功了,配置文件也相对应的更改为v13.0:

connectionString="Data Source=(LocalDB)\v13.0;AttachDbFilename=|DataDirectory|\数据库文件名字.mdf;Integrated Security=True;Connect Timeout=30"

源码的cs文件相关语句也需要修改(CTRL+F搜索Data Source即可):

@"Data Source=(LocalDB)\v13.0;AttachDbFilename=|DataDirectory|\数据库文件名字.mdf;Integrated Security=True;Connect Timeout=30";

跑通了!!!!!终于!!!!!撒花!!!!!?

小盆友不妥之处烦请大佬指正呀~

  相关解决方案