首页 文章

C#Windows服务SQL Server连接问题

提问于
浏览
0

在Windows Server 2012上,我创建了一个使用服务帐户运行的C#Windows服务 .

在构造函数中,我正在使用ADO.NET从SQL Server数据库中读取配置 .

当我尝试启动该服务时,它失败并出现以下异常 . 在尝试启动该服务几次后,它就开始了 .

“等待操作超时连接Timeout Expired . 尝试使用登录前握手确认时超时时间已过 . ”

以下是来自Logs的异常消息

等待操作超时连接Timeout Expired . 尝试使用登录前握手确认时超时时间已过 . 这可能是因为登录前握手失败或服务器无法及时响应 . 尝试连接到此服务器所花费的时间是 - [Pre-Login] initialization = 21169;握手= 332;在System的System.Data.sqlclient.sqlinternalconnection.onError(sqlException异常,布尔断开连接,Action'l wrapcloseinAction) . 数据 . Sqlclient.TdsParser.ThrowExceptionAndwarning(TdsParserStateobject stateobj,Boolean callerHasconnectionLock,Boolean asyncclose)at system.Data.sqlclient.TdsParserstateoblect.ReadsniError(TdsParserstateobject stateobj,unt32 error)at system.Data.sqlclient.TdsParserstateoblect.ReadsnisyncoverAsync()at System . 数据 . Sqlclient.TdsParserStateob)系统中的ect.TryReadNetworkPacket() . 数据 . system.Data.sqlclient.TdsParser.connect(serverinfo serverinfo,sqlinternalconnectionTds connHandler,Boolean ignoresniopenTimeout,1nt64 timerExpire,Boolean encrypt,Boolean trustservercert,Boolean integratedsecurity,Sqlclient.TdsParser.consumePreLoginiiandshake(Boolean encrypt,Boolean trustservercert,Boolean integratedsecurity,Boolean&marscapable),布尔withFailover)在system.Data.sqlclient.sqlinternalconnectionTds.AttemptoneLogin(serverinfo serverinfo,串NEWPASSWORD,SecureString的newsecurePassword,布尔ignoresniopenTimeout,TimeoutTimer超时,布尔withFailover)在system.Data.sqlclient.sqlinternalconnectionTds.LoginNoFailover(serverinfo serverinfo,串NEWPASSWORD,SecureString的newsecurePassword,布尔redirecteduserinstance,sqlconnectionstring connectionoptions,sqlcredential凭证,TimeoutTimer超时)在system.Data.sqlclient.sglinternalconnectionTds.openLoginEnlist(TimeoutTimer超时,sqlconnectionstring connectionoptions,sqlcredentialç system.Data.sqlclient.sqlinternalconnectionTds..ctor中的redential,string newPassword,securestring newsecurePassword,Boolean redirecteduserinstance)(DbconnectionPoolidentity identity,sqlconnectionstring connectionoptions,sqlcredential credential,object providerinfo,string newPassword,securestring newsecurePassword,Boolean redirecteduserinstance,sqlconnectionstring userconnectionoptions,sessionData reconnectsessionData) at system.Data.sqlclient.sqlconnectionFactory.createconnection(Dbconnectionoptions选项,DbconnectionPoolKey poolKey,对象poolGroupProviderinfo,DbconnectionPool池,Dbconnection owningconnection,Dbconnectionoptions useroptions)at system.Data.ProviderBasembconnectionFactory.createPooledconnection(DbconnectionPool池,Dbconnection owningobject,Dbconnectionoptions选项,DbconnectionPoolKey poolKey, System.Data.ProviderBasembconnectionPool.createobject上的Dbconnectionoptions useroptions)(Dbconnection owningobject,Dbconnectionoptions useroptions,D bconnectioninternal oldconnection)at system.Data.ProviderBasembconnectionPool.usercreateRequest(Dbconnection owningobject,Dbconnectionoptions useroptions,Dbconnectioninternal oldconnection)at system.Data.ProviderBasembconnectionPool.TryGetconnection(Dbconnection owningobject,uInt32 waitFormultipleobjectsTimeout,Boolean allowcreate,Boolean onlyonecheckconnection,dbconnectionoptions useroptions,Dbconnectioninternal&connection)at system system.Data.ProviderBasembconnectionFactory.TryGetconnection(Dbconnection owningconnection,Taskcompletionsource'l retry,Dbconnectionoptions useroptions,Dbconnectioninternal oldconnection,Dbconnectioninternal&connection)at .Data.ProviderBase.DbconnectionPool.TryGetconnection(Dbconnection owningobject,Taskcompletionsource'l retry,Dbconnectionoptions useroptions,Dbconnectioninternal&connection)at at system.Data.ProviderBase.Dbconnectioninternal.Tryopenconnectioninternal(Dbconnection outerconnection,DbconnectionFactory connectionFactory,Taskcompletionsource'l retry,Dbconnectionoptions useroptions)at system.Data.ProviderBasembconnectionclosed.Tryopenconnection(Dbconnection outerconnection,DbconnectionFactory connectionFactory,Taskcompletionsource'l retry,Dbconnectionoptions useroptions)at system.Data.sqlclient.sqlconnection.Tryopeninner(Taskcompletionsource'l retry)at system . system.Data.sqlclient.sqlconnection.open()中的Data.sqlclient.sqlconnection.Tryopen(Taskcompletionsource'l retry)

1 回答

  • 0

    在连接字符串中添加“MultiSubnetFailover = True”后问题已解决

    谢谢大家的帮助 .

相关问题