我维护了一个自动化数据处理机器系统,它运行由 SQl Server 2014 企业版数据库控制的用 C# 编写的进程。一天几次,一台机器上的所有进程将开始收到以下错误:
发生了错误。异常的详细信息:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 定位服务器/指定实例时出错)无法连接到 SQL Server 数据库。
尝试联系数据库时,机器上的所有进程都会遇到相同的错误。10 或 15 分钟后,机器将能够再次连接。当这种情况发生时,同一网络上的其他机器将能够连接没有问题。我们检查了数据库 - SQL Server 正在运行 - 它没有被阻止它正在接受连接,实例名称是正确的。这是一个间歇性问题,它不会影响连接到数据库的所有机器,但当它影响一台机器时 - 所有进程都会遇到错误。我已经搜索了这条消息,我发现的所有答案都是针对不断失败的——而不是像我所经历的那样间歇性。
更新
在另一个问题上发现了这个 - 现在测试看起来不错:
问题是 SQL 被配置为允许 TCP 和命名管道。有时它会尝试与不使用标准 SQL 端口的后者连接。解决方案是在连接字符串中为数据源/服务器添加前缀 Data Source=tcp:xxx.xxx.xx.xxx 以始终确保它通过 TCP 连接