Windows服务出现间歇性错误:底层提供程序在打开时失败。

3
我有一个在域服务帐户上下文中运行的Windows服务,它使用SQL Server数据库进行通信。它每隔10分钟运行一次,并且每次都与数据库通信。
我曾多次遇到这样的情况:它会连续运行数天,然后我发现服务停止了,因为抛出了异常。
查看日志,我发现:
消息:“底层提供程序在打开时失败。”
堆栈跟踪:在System.Data.Entity.Core.EntityClient.EntityConnection.Open()...
内部异常是:
消息:“在建立与SQL Server的连接时发生与网络相关或特定于实例的错误。无法找到服务器或无法访问服务器。请验证实例名称是否正确,并确认SQL Server已配置为允许远程连接。(提供程序:SQL Network Interfaces,错误:26 - 无法定位服务器/实例指定)”
堆栈跟踪:在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`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" />

我可以将Windows服务设置为在停止后自动重新启动。但我想找到潜在的问题。我还考虑过连接弹性, 但这可能会导致问题,因为如果服务器名称不正确,则在安装服务时也可能出现此错误。换句话说,它可能会一直重试错误的连接名称。
我设置了DebugDiag并针对转储文件运行了分析,它给出了以下建议:
请与供应商Microsoft Corporation跟进以下文件的问题解决方案: C:\Windows\assembly\NativeImages_v4.0.30319_64\mscorlib\ce681fb89786c8f11e99ae5f8e9588ab\mscorlib.ni.dll。
1个回答

0

奇怪的是出现了“找不到指定的服务器/实例错误”的消息——你会认为这是超时问题。 - Josh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接