Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net SQL Server 2012远程连接出现超时和异步网络IO错误_.net_Sql Server_Networking_Sql Server 2012_Tcp Ip - Fatal编程技术网

.net SQL Server 2012远程连接出现超时和异步网络IO错误

.net SQL Server 2012远程连接出现超时和异步网络IO错误,.net,sql-server,networking,sql-server-2012,tcp-ip,.net,Sql Server,Networking,Sql Server 2012,Tcp Ip,连接到SQL Server 2012远程实例的服务遇到问题 .NET 2.0服务在客户端计算机上运行,它使用TCP/IP连接到当前运行SQL server 2012实例的远程web服务器。web服务器以前是Windows server 2003和SQL server 2005,6个月前升级时没有出现任何问题。然后,服务会检查是否有需要下载的数据 客户机 Windows Server 2003 网络服务器 Windows Server 2012 SQL Server 2012 这是运行良好

连接到SQL Server 2012远程实例的服务遇到问题

.NET 2.0服务在客户端计算机上运行,它使用TCP/IP连接到当前运行SQL server 2012实例的远程web服务器。web服务器以前是Windows server 2003和SQL server 2005,6个月前升级时没有出现任何问题。然后,服务会检查是否有需要下载的数据

客户机

  • Windows Server 2003
网络服务器

  • Windows Server 2012
  • SQL Server 2012
这是运行良好的5年多,直到上周五,它突然停止工作,并给出以下错误日志消息

Event Type: Warning
Event Source:   
Event Category: None
Event ID:   0
Date:       21/05/2013
Time:       16:45:11
User:       N/A
Computer:   
Description:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
   at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
   at System.Data.SqlClient.TdsParserStateObject.ReadByteArray(Byte[] buff, Int32 offset, Int32 len)
   at System.Data.SqlClient.TdsParserStateObject.ReadUInt32()
   at System.Data.SqlClient.TdsParser.ReadSqlValueInternal(SqlBuffer value, Byte tdsType, Int32 typeId, Int32 length, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.ReadSqlValue(SqlBuffer value, SqlMetaDataPriv md, Int32 length, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ReadColumnData()
   at System.Data.SqlClient.SqlDataReader.ReadColumnHeader(Int32 i)
   at System.Data.SqlClient.SqlDataReader.ReadColumn(Int32 i, Boolean setTimeout)
   at System.Data.SqlClient.SqlDataReader.GetValueInternal(Int32 i)
   at System.Data.SqlClient.SqlDataReader.GetValue(Int32 i)
   at RedBlack.Data.Synchronisation.SyncManager.UpsertRecords(String sourceSelect, String destTable, String[] destFields, List`1 relations)
   at General.CyPro.Application.WebSynchronisation.SyncRoutines.FetchOrders(UpsertFlags upsertOptions)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Delegate.DynamicInvokeImpl(Object[] args)
   at RedBlack.CyPro.Application.WebSynchronisation.Job.Run(Object[] args)
...
System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
   at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
   at System.Data.SqlClient.TdsParserStateObject.ReadByteArray(Byte[] buff, Int32 offset, Int32 len)
   at System.Data.SqlClient.TdsParserStateObject.ReadUInt32()
   at System.Data.SqlClient.TdsParser.ReadSqlValueInternal(SqlBuffer value, Byte tdsType, Int32 typeId, Int32 length, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.ReadSqlValue(SqlBuffer value, SqlMetaDataPriv md, Int32 length, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ReadColumnData()
   at System.Data.SqlClient.SqlDataReader.ReadColumnHeader(Int32 i)
   at System.Data.SqlClient.SqlDataReader.ReadColumn(Int32 i, Boolean setTimeout)
   at System.Data.SqlClient.SqlDataReader.GetValueInternal(Int32 i)
   at System.Data.SqlClient.SqlDataReader.GetValue(Int32 i)
   at RedBlack.Data.Synchronisation.SyncManager.UpsertRecords(String sourceSelect, String destTable, String[] destFields, List`1 relations)
   at General.CyPro.Application.WebSynchronisation.SyncRoutines.FetchOrders(UpsertFlags upsertOptions)
我已经检查了web服务器上的活动监视器,当查询运行时,它将使用异步网络IO的等待类型挂起

我已经在远程连接到web服务器实例的客户机服务器上的ManagementStudio中运行了它试图手动运行的查询,它运行了大约40秒,返回2600多行,然后出现以下错误

Msg 121, Level 20, State 0, Line 0
A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)
我在ManagementStudio中远程连接到web服务器实例的计算机上运行了相同的查询,它在0.312秒内返回完整的4000行

在我看来,这似乎是某种网络问题,所以我在试图弄明白这一点时不知所措。客户的硬件技术人员已经检查了网络,并表示就他们而言一切都很好

如果你需要更多的信息,请告诉我

谢谢

这里有一些东西可以试试。 这意味着两件事:

Long running task or uncommited transaction
30秒是SQL客户端等待的默认值。它使您的客户端机器超时。 您的客户端的此连接的实际数据传输速度是否太慢,无法及时获取所有行?
也许另一个进程会关闭此连接,客户端等待响应的时间会延长?

从其他有(某种程度上)类似问题的人的解决方案来看,这几乎总是三件事之一:

  • 磁盘损坏或出现故障。使用
    CHKDSK/r
    解决此问题

  • 坏网卡,或

  • DHCP问题,特别是租约到期/续约


  • 我不知道有哪种情况是SQL Server特有的。

    这一问题已得到解决,最终证明是客户端internet的问题。我不知道所有的细节,但BT在exchange上发现了一个问题,一旦问题得到解决,程序就重新开始工作。

    这解决了超时错误,但不是根本问题,错误日志消息已更改为
    ,从服务器接收结果时发生了传输级错误。(提供程序:TCP提供程序,错误:0-信号量超时时间已过期。)
    而不是超时错误。客户端的互联网速度确实很慢,但他们的连接速度已经保持了6年,他们正在让宽带供应商检查连接。在这之前,您检查过对web服务器所做的更改吗?可能是修补程序、升级或更改设置?或者您的客户机已升级/更改?信号量超时-是较低级别的超时-可能在网络或文件系统级别。您可以运行DBCC CHECKTABLE MyTable查看您的表是否正常,但由于您可以在计算机上正常运行脚本,所以问题不在数据库范围内。