!本贴重点看这里!
针对在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";
跑通了!!!!!终于!!!!!撒花!!!!!?
小盆友不妥之处烦请大佬指正呀~