sql server 2008 - superado - Win32Exception(0x80004005): se agotó el tiempo de espera de la operación de espera
tiempo de espera de la operación de espera agotado sql server (8)
Busque en las tablas de reindexación en su base de datos.
Primero puede averiguar el nivel de fragmentación, y si está por encima del 10% o más, podría beneficiarse al volver a indexar. Si es muy alto, es probable que esto esté creando un cuello de botella de rendimiento significativo.
Esto debe hacerse regularmente.
Estoy ejecutando una página de páginas web ASP.NET que, al cargarse inicialmente, saca una lista de elementos de un servidor SQL. Esta consulta se ejecuta en un segundo y carga la página en 2 segundos. El retorno es alrededor de 1000 registros, más o menos. Extraigo los nombres de host de una base de datos SQL de Service Manager junto con otra información.
Dentro de esta página, tengo una búsqueda incorporada que básicamente ejecuta exactamente la misma consulta, pero la ejecuta con un LIKE basado en el nombre de host. Esto carga la misma página con todos los nombres de host que contienen parte de la consulta de búsqueda. La consulta generalmente se ejecuta en SQL Management Studio en menos de un segundo, pero la carga de la página lleva mucho más tiempo y, en ocasiones, se agota el tiempo de espera.
Mi pregunta es, ¿por qué la búsqueda basada en parámetros lleva mucho más tiempo y a veces expira sin razón aparente? ¿Hay algún paso que pueda tomarse para mitigar este tiempo de espera? A continuación se muestra el error completo.
Error del servidor en la aplicación ''/''.
The wait operation timed out
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción:
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
Stack Trace:
[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
Información de la versión: 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
El problema que tiene es que el comando de consulta tarda demasiado. Creo que el tiempo de espera predeterminado para que se ejecute una consulta es de 15 segundos. Debe configurar CommandTimeout (en segundos) para que sea lo suficientemente largo como para que el comando complete su ejecución. El "CommandTimeout" es diferente del "Tiempo de espera de conexión" en su cadena de conexión y debe establecerse para cada comando.
En su evento de selección sql, use el comando:
e.Command.CommandTimeout = 60
por ejemplo:
Protected Sub SqlDataSource1_Selecting(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs)
e.Command.CommandTimeout = 60
End Sub
Mi tabla no tenía clave principal, entonces tuve un error de tiempo de espera. después de establecer la clave sloved.
Nos encontramos con este error después de una actualización de 2008 a 2014 SQL Server, donde nuestras algunas de nuestras cadenas de conexión previas para el desarrollo local tenían un origen de datos =. / Como este
<add name="MyLocalDatabase" connectionString="Data Source=./;Initial Catalog=SomeCatalog;Integrated Security=SSPI;Application Name=MyApplication;"/>
Cambiar eso de ./ a cualquiera (local) o localhost solucionó el problema.
<add name="MyLocalDatabase" connectionString="Data Source=(local);Initial Catalog=SomeCatalog;Integrated Security=SSPI;Application Name=MyApplication;"/>
Para todos aquellos que saben más que yo, en lugar de marcarlo como inútil o engañoso, léelo una vez más. Tuve problemas con mi máquina virtual (VM) que no respondía debido a que todos los recursos estaban siendo consumidos por los hilos bloqueados, por lo que matar hilos es la única opción que tenía. No estoy recomendando esto a nadie que esté ejecutando largas consultas, pero puede ayudar a aquellos que están atrapados con máquinas virtuales que no responden o algo así. Es hasta para que las personas tomen la decisión. Sí, matará su consulta, pero guardó mi máquina VM siendo destruida.
Serverstack ya respondió una pregunta similar. Solucionó mi problema con SQL en máquina VM. Por favor revisa here
Debe ejecutar el siguiente comando para solucionar problemas con los índices.
exec sp_updatestats
Probé las otras respuestas aquí, así como algunas otras. Incluso paré y reinicié los servicios de SQL. Nada funcionó.
Sin embargo, reiniciar mi computadora funcionó.
Si está utilizando Entity Framework , puede extender el tiempo de espera predeterminado (para dar más tiempo a una consulta de larga duración):
myDbContext.Database.CommandTimeout = 300;
Donde myDbContext
es su instancia de DbContext, y 300
es el valor de tiempo de espera en segundos.
(Sintaxis actual a partir de Entity Framework 6.)
Tuve el mismo problema. Ejecutar exec sp_updatestats
funcionaba a veces, pero no siempre. Decidí usar la declaración NOLOCK
en mis consultas para acelerar las consultas. Simplemente agregue NOLOCK
después de su cláusula FROM, por ejemplo:
SELECT clicks.entryURL, clicks.entryTime, sessions.userID
FROM sessions, clicks WITH (NOLOCK)
WHERE sessions.sessionID = clicks.sessionID AND clicks.entryTime > DATEADD(day, -1, GETDATE())
Lea el artículo completo here .