SQL Server 与本地数据库的连接突然失败.代码中没有任何更改
本文关键字:代码 失败 任何更 突然 连接 Server 数据库 SQL | 更新日期: 2023-09-27 18:35:06
我一直在使用驻留在本地计算机上的SQL Server Express数据库和几个C#应用程序。其中一个一直工作没有任何问题。对于另一个应用程序,我在同一位置对同一数据库使用了相同的连接字符串,但是每次运行该应用程序时,它第一次尝试处理SQL连接时,都会收到错误。我停止调试并重新启动它,第二次它总是连接没有问题。这已经以这种方式工作了几个月。今晚它完全停止工作。现在每次我运行程序时它都不会连接。一切都没有改变。我没有触摸连接字符串或与之相关的任何代码。没道理!我去了使用相同的连接的旧程序,该程序每次都始终有效,但它不会连接,并且出现相同的错误。
相关代码为:
conString="Data Source=.''SQLEXPRESS;AttachDbFilename=C:''"Path
name"''Employees.mdf;Integrated Security=True;User Instance=True";
SqlConnection sqlConn = new SqlConnection(conString);
sqlConn.Open();
当它尝试打开此连接时,我收到错误。错误消息是:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及 SQL Server 是否配置为允许远程连接。(提供程序:SQL 网络接口,错误: 26 - 查找指定的服务器/实例时出错)
如果 100% 确定连接字符串正确,则这不是 C# 问题,也不是代码问题。.NET 框架中的 SQL 驱动程序使用 SQL 浏览器服务来解析某些连接字符串,因此这可能未运行。
据我所知,如果指定基于 TCP 的连接字符串(具有 DNS 可解析的主机名或 IP 地址以及端口号),则不需要 SQL 浏览器。但是,如果指定数据源值 [hostname]/[instance-name](例如 .''SQLEXPRESS),则将调用浏览器服务。
.NET SQL 驱动程序通过 UDP(端口 1434)向 SQL 浏览器服务发送请求,尝试解析请求的实例名称。浏览器服务使用计算机上所有 SQL 实例的枚举进行响应。当然,如果浏览器服务未运行,您会收到"错误 26"...
希望这能解释发生了什么...