Hemos tenido un problema con un bloque de código que responde mal frente a bases de datos lentas (caga la cama en un tiempo de espera de consulta). Hemos creado un parche y estamos en proceso de ejecutarlo mediante regresión.
No podemos conseguir un tiempo de espera. Abrí una transacción de SQL Mgmt Studio y actualicé cada fila para bloquearlas, pero eso no hace que los INSERTs se agoten (que es lo que necesito).
¿Puedo obtener un bloqueo a nivel de tabla fácilmente a través de T-SQL? ¿O tengo que jugar con el maestro? ¿O puedo forzar fácilmente el tiempo de espera sin bloquear? Se agradece cualquier aporte.
sql-server
testing
timeout
locking
Bn Wasteland
fuente
fuente
Puede decirle a su código SQL que espere un minuto antes de regresar:
fuente
Por otro lado: si la conexión es configurable, reduzca el tiempo de espera de la cadena de conexión a 1 segundo; eso lo hará más fácil. Llene la tabla con montones de datos y haga que otros 3 procesos giren en un ciclo actualizando fragmentos de esa tabla con una transacción alrededor del ciclo. No modifique el procedimiento real llamado por la aplicación (inyectando waitfor). Eso invalida una prueba de integración.
Pero realmente, este es un estudio de caso a favor de las pruebas unitarias y la inyección de dependencia. Algunas cosas son difíciles de probar de integración. Prueba unitaria + inyección de dependencia .
Esta es la inyección de "dependencia". El desarrollador puede inyectar la dependencia a la base de datos, sustituyendo algo que simule el comportamiento de una dependencia. Bueno para todas las pruebas de bases de datos. De todos modos, con la prueba unitaria implementada, sabe que la solución hace lo que debería, pero aún necesita una prueba de integración. En este caso, es mejor que se centre en la regresión, lo que significa que probarlo no rompió nada más y la función aún funciona.
Ya ha creado su parche, así que supongo que mi respuesta es demasiado tarde.
fuente
Consulte esta publicación de blog. Básicamente, SQL Server no tiene tiempos de espera de consulta. Los clientes pueden imponer un tiempo de espera de SQL, pero el motor en sí no lo hace.
http://blogs.msdn.com/khen1234/archive/2005/10/20/483015.aspx
fuente