Win32Exception(0X80004005):等待操作超时(Win32Exception (

2019-09-01 21:55发布

我运行在初始负载拉从SQL Server的项目列表的ASP.NET网页的页面。 该查询在第二运行左右,在2秒钟内加载页面。 返回约1000条记录,给予或采取。 我从服务管理SQL数据库和其他信息一起拉动主机名。

在这个页面,我都内置了一个搜索基本运行完全相同的查询,但基于主机名LIKE运行它。 这将加载相同页面是包含搜索查询的一部分,所有的主机名。 查询一般在一秒之内SQL Management Studio中运行,但加载页面大大延长,有时超时需要。

我的问题是,为什么基于参数搜索需要长得多,有时超时没有明显的原因。 是否有可以采取的减轻这种超时的任何步骤? 下面是完整的错误。

在“/”应用程序的服务器错误。


The wait operation timed out 

说明:在当前Web请求的执行过程中发生未处理的异常。 请检查堆栈跟踪有关该错误它起源于代码的详细信息和。

异常详细信息:

System.ComponentModel.Win32Exception: The wait operation timed out
Source Error: 

Line 13:     }
Line 14:     
Line 15:     var selectedData = db.Query(selectCommand, searchTerm);
Line 16: 
Line 17:

Source File:  c:\Users\u0149920\Documents\My Web Sites\AppSupport\servers\default.cshtml    Line:  15

堆栈跟踪:

[Win32Exception (0x80004005): The wait operation timed out]
[SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1753346
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5295154
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +242
   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1682
   System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +59
   System.Data.SqlClient.SqlDataReader.get_MetaData() +90
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +365
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) +1325
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +175
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +53
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +134
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +41
   System.Data.Common.DbCommand.ExecuteReader() +12
   WebMatrix.Data.<QueryInternal>d__0.MoveNext() +152
   System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +381
   System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
   WebMatrix.Data.Database.Query(String commandText, Object[] parameters) +103
   ASP._Page_servers_default_cshtml.Execute() in c:\Users\u0149920\Documents\My Web Sites\AppSupport\servers\default.cshtml:15
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +197
   System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 executors) +69
   System.Web.WebPages.WebPage.ExecutePageHierarchy() +151
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +76
   System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext) +114

版本信息: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.17929 Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.17929

Answer 1:

您所遇到的问题是查询命令的时间过长。 我认为,查询执行默认的超时时间为15秒。 您需要设置的CommandTimeout(单位:秒),以便它是命令完成执行足够长的时间。 该“的CommandTimeout”是比“连接超时”在连接字符串中不同,必须为每个命令设置。

在SQL选择事件,使用命令:

e.Command.CommandTimeout = 60

例如:

Protected Sub SqlDataSource1_Selecting(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs)
    e.Command.CommandTimeout = 60
End Sub


Answer 2:

所有这些,谁知道比我多,而不是将其标记无益的或误导性的,读它一次。 我有问题,与我的虚拟机(VM)变得反应迟钝,由于所有的资源被锁定的线程所消耗,所以杀死线程是我唯一的选择。 我不建议这对谁是长时间运行的查询,但可以帮助那些被卡住反应迟钝VM什么谁的人。 其先进个人接电话。 是的,它会杀死你的查询,但它救了被破坏我的虚拟机的机器。

Serverstack已经回答了类似的问题。 它解决了虚拟机上的SQL我的问题。 请点击这里

您需要运行下面的命令来修复使用索引的问题。

exec sp_updatestats


Answer 3:

我遇到过同样的问题。 运行exec sp_updatestats确实有时候工作,但并非总是如此。 我决定使用NOLOCK在我的查询语句来加快查询。 只需添加NOLOCK您的FROM子句中,如后:

SELECT clicks.entryURL, clicks.entryTime, sessions.userID
FROM sessions, clicks WITH (NOLOCK)
WHERE sessions.sessionID = clicks.sessionID AND clicks.entryTime > DATEADD(day, -1, GETDATE())

阅读完整的文章在这里 。



Answer 4:

如果您使用实体框架 ,你可以扩展默认的超时时间(给长时间运行的查询更多的时间来完成),这样做:

myDbContext.Database.CommandTimeout = 300;

其中myDbContext是你的DbContext实例,而300是以秒的超时值。

(语法电流作为实体框架6的)



Answer 5:

我想在这里其他的答案以及其他几个人。 我甚至停止并重新启动SQL服务。 毫无效果。

但是,重新启动我的电脑做的工作。



Answer 6:

看看在你的数据库重新索引表。

你可以先找出碎片化程度 - 如果它是10%以上或所以你可以重新索引中受益。 如果它是非常高的很可能这是创造一个显著的性能瓶颈。

http://blog.sqlauthority.com/2009/01/30/sql-server-2008-2005-rebuild-every-index-of-all-tables-of-database-rebuild-index-with-fillfactor/

这应该定期进行。



Answer 7:

我们2008年至2014年的SQL Server在那里我们我们的一些地方发展上一个连接字符串中有一个数据源,在升级之后遇到此错误= /像这样

        <add name="MyLocalDatabase" connectionString="Data Source=./;Initial Catalog=SomeCatalog;Integrated Security=SSPI;Application Name=MyApplication;"/>

改变从./要么(本地)或本地主机固定的问题。

<add name="MyLocalDatabase" connectionString="Data Source=(local);Initial Catalog=SomeCatalog;Integrated Security=SSPI;Application Name=MyApplication;"/>


Answer 8:

我的表没有主键,然后我就超时错误。 后设置键sloved。



Answer 9:

这个问题会发生,因为SqlCommand的执行时间。 设置将CommandTimeout = 100或期望的值

在@Note其更好秒的超时值,以提供最佳的价值



文章来源: Win32Exception (0x80004005): The wait operation timed out