visual - tiempo de espera de la operación de espera agotado c#
Una lista de verificación para arreglar las aplicaciones.NET a los problemas de tiempo de espera de SQL Server y mejorar el tiempo de ejecución (8)
Una lista de verificación para mejorar el tiempo de ejecución entre el código .NET y SQL Server. Se aprecia cualquier cosa, desde las soluciones básicas hasta las extrañas.
Código:
Cambie el tiempo de espera predeterminado en comando y conexión por avgbody .
Utilice las llamadas de procedimiento almacenado en lugar de la declaración sql en línea por avgbody .
Busque bloquear / bloquear con el monitor de actividad de Jay Shepherd .
Servidor SQL:
Tenga cuidado con el olfato de parámetros en los procedimientos almacenados por AlexCuse .
Tenga cuidado con el crecimiento dinámico de la base de datos por Martin Clarke .
Use Profiler para encontrar cualquier consulta / procedimiento almacenado que demuestre más de 100 milisegundos por BradO .
Aumente el tiempo de espera de transacción por medio de un cuerpo .
Convierta los procedimientos almacenados dinámicos en estáticos por medio de avgbody .
Comprueba qué ocupado está el servidor de Jay Shepherd .
Algunos rápidos ...
- Verifique el uso del servidor por parte del procesador para ver si está demasiado ocupado
- Busque bloquear / bloquear con el monitor de actividad
- Problemas de red / rendimiento
Ejecute Profiler para medir el tiempo de ejecución de sus consultas.
Verifica el registro de la aplicación en busca de puntos muertos.
En el pasado, algunas de mis soluciones han sido:
Repare la configuración de tiempo de espera predeterminada de sqlcommand:
Dim myCommand como New SqlCommand ("[dbo]. [SpSetUserPreferences]", myConnection)
myCommand.CommandType = CommandType.StoredProcedure
myCommand.CommandTimeout = 120
Aumentar la cadena de tiempo de espera de conexión:
Data Source = mydatabase; Initial Catalog = Match; Persist Security Info = True; User ID = User; Password = password; Tiempo de espera de conexión = 120
Aumente el tiempo de espera de la transacción en sql-server 2005
En Herramientas del estudio de gestión> Opción> Diseñadores Aumente el "Tiempo de espera de transacción después de:" incluso si "Habilita / desmarque el valor de tiempo de espera de la cadena de conexión para las actualizaciones del diseñador de tablas".
Convierta los procedimientos almacenados dinámicos en los estáticos
Haga que el código llame a un procedimiento almacenado en lugar de escribir una instrucción sql en línea en el código.
¿Estás usando procedimientos almacenados? Si es así, debes tener cuidado con el olfateo de parámetros. En ciertas situaciones, esto puede generar consultas de ejecución muy larga. Algunos leyendo:
http://blogs.msdn.com/queryoptteam/archive/2006/03/31/565991.aspx
http://blogs.msdn.com/khen1234/archive/2005/06/02/424228.aspx
En primer lugar, compruebe la ejecución real de la consulta. Utilizo SQL Server Profiler como configuro a través de mi programa y compruebo que todas mis consultas utilicen combinaciones correctas y claves de referencia cuando puedo.
Me gusta usar SQL Server Profiler también. Me gusta configurar un seguimiento en un sitio de cliente en su servidor de base de datos durante un buen período de tiempo de 15-30 minutos en el medio del día laboral y registrar todas las consultas / procesos almacenados con una duración> 100 milisegundos. Ese es mi criterio de todos modos para las consultas de "larga ejecución".
Una "solución" extraña para las quejas en tiempo de respuesta prolongado es tener una barra de progreso más interesante. Significado, trabajar en la sensación del usuario. Un ejemplo es el icono de espera de Windows Vista. Ese círculo giratorio rápido da la sensación de que las cosas van más rápido. Google usa el mismo truco en Android (al menos la versión que he visto).
Sin embargo, sugiero tratar de abordar el problema técnico primero, y trabajar en el comportamiento humano solo cuando no tengas opciones.
Una extraña que se aplicó a SQL Server 2000 que aún podría aplicarse hoy:
Asegúrese de que no está tratando de hacer crecer dinámicamente la base de datos en producción. Llega un punto en el que la cantidad de tiempo que se tarda en asignar ese espacio adicional y la carga normal que se ejecuta provocará que sus consultas expiren (¡y también el crecimiento!)