我在域服务帐户的上下文中运行Windows服务,该帐户使用与SQL Server数据库通信。它每10分钟运行一次,每次都与数据库通信。
我有过多次运行数天的情况然后我发现服务停止了,因为抛出了异常。
查看我发现的日志:
消息:基础提供程序在Open上失败。
Stack Trace:at System.Data.Entity.Core.EntityClient.EntityConnection.Open()...
内部例外:
消息:发生与网络相关或特定于实例的错误 建立与SQL Server的连接。找不到服务器或 无法访问。验证实例名称是否正确 SQL Server配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 查找服务器/实例时出错 指定)
Stack Trace:at 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服务设置为在停止时自动重启。但我想找到潜在的问题。我还想到了Connection Resiliency,但这可能会导致问题,因为如果服务器名称不正确,安装服务时也会发生此错误。换句话说,它可以继续重试一个错误的连接名称。
我设置DebugDiag并对转储文件运行分析,它给了我以下建议:
请与供应商Microsoft Corporation联系以解决问题 有关以下文件的决议: C:\的Windows \组件\ NativeImages_v4.0.30319_64 \ mscorlib程序\ ce681fb89786c8f11e99ae5f8e9588ab \ mscorlib.ni.dll
答案 0 :(得分:0)
这很可能是网络问题。我最好的建议是,您与组织中的网络人员一起工作,并确定是否存在一些潜在的间歇性网络问题。
在您的情况下可能或可能不起作用的解决方法是尝试直接连接到数据库服务器的IP和端口。
有关解决此问题的详细信息,请访问以下MSDN博客:http://blogs.msdn.com/b/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-instance-specified.aspx