C# Windows服务上出现间歇性错误:基础提供程序在打开时失败

C# Windows服务上出现间歇性错误:基础提供程序在打开时失败,c#,.net,sql-server,entity-framework,windows-services,C#,.net,Sql Server,Entity Framework,Windows Services,我有一个Windows服务在域服务帐户的上下文下运行,该帐户使用与SQL Server数据库通信。它每10分钟运行一次,每次都与数据库通信 我有过多次这样的情况,它会运行几天,然后我发现服务停止了,因为抛出了异常 查看日志,我发现: 消息:基础提供程序在打开时失败 堆栈跟踪:在 System.Data.Entity.Core.EntityClient.EntityConnection.Open() 内部例外情况如下: 消息:运行时发生与网络相关或特定于实例的错误 正在建立与SQL Server的

我有一个Windows服务在域服务帐户的上下文下运行,该帐户使用与SQL Server数据库通信。它每10分钟运行一次,每次都与数据库通信

我有过多次这样的情况,它会运行几天,然后我发现服务停止了,因为抛出了异常

查看日志,我发现:

消息:基础提供程序在打开时失败

堆栈跟踪:在 System.Data.Entity.Core.EntityClient.EntityConnection.Open()

内部例外情况如下:

消息:运行时发生与网络相关或特定于实例的错误 正在建立与SQL Server的连接。找不到服务器,或者 无法访问。验证实例名称是否正确,以及 SQL Server配置为允许远程连接。(提供程序:SQL) 网络接口,错误:26-定位服务器/实例时出错 (指定)

堆栈跟踪:在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔断开连接,操作'1 wrapCloseInAction)

我与负责管理SQL Server的DBA进行了检查,当出现错误时,服务器已启动并运行,并且日志中没有任何相关信息表明停机或网络连接丢失

Windows服务是使用.NET 4.5和Entity Framework 6构建的。它使用以下连接字符串:

<add name="AmceContext" 
         connectionString="data source=ServerName\InstanceName;initial catalog=DbName;integrated security=SSPI;MultipleActiveResultSets=True;App=EntityFramework" 
         providerName="System.Data.SqlClient" />
但这可能会导致问题,因为如果服务器名称不正确,安装服务时也可能发生此错误。换句话说,它可能会不断重试错误的连接名

我安装了DebugDiag并对转储文件进行了分析,它给了我以下建议:

如有问题,请与供应商Microsoft Corporation联系 关于下列文件的决议: C:\Windows\assembly\NativeImage\u v4.0.30319\u 64\mscorlib\ce681fb89786c8f11e99ae5f8e9588ab\mscorlib.ni.dll


这很可能是网络问题。我最好的建议是,你们和组织中的人际网络人员一起工作,找出是否存在一些潜在的间歇性人际网络问题

在您的情况下,一种可能有效也可能无效的解决方法是尝试直接连接到DB服务器的IP和端口

有关解决此问题的更多信息,请访问以下MSDN博客:

奇怪的是消息“错误定位指定的服务器/实例”-您可能认为这是一个超时问题。