Si ejecuto un proceso almacenado utilizando el SqlCommand y el SqlCommand supera el tiempo de espera, ¿el StoredProc continúa ejecutándose o se fuerza al salir cuando el SqlCommand se desconecta?Stored Proc y SqlCommand Timeout
Respuesta
Mi instinto me decía que el procedimiento seguiría ejecutándose, así que armé una prueba simple.
SQL:
Create Procedure TestDelay
AS
waitfor delay '00:00:40'
update table_1
set dt = getdate()
Y en VB.Net (igual que C# para este propósito):
Dim con As New SqlConnection(myconnectionstring)
Dim com As New SqlCommand("TestDelay", con)
com.CommandType = CommandType.StoredProcedure
con.Open()
Try
com.ExecuteNonQuery()
Catch ex As Exception
con.Close()
Response.Write(ex.Message)
End Try
El resultado? El procedimiento no se completó después del tiempo de espera. Comprobé qué estaba sucediendo durante un rastreo en el generador de perfiles de SQL y, efectivamente, aparece SQL para envolver la llamada en una transacción y debe retrotraer esa transacción en el tiempo de espera.
Nota: Esta prueba se ejecutó contra SQL 2005, pero sospecho que los resultados serán similares en otras versiones.
Como afirmó Brendan, el cliente envía un "aborto" y el procesamiento se detiene. Tan sencillo como eso.
Sin embargo, es más complejo que eso ...
Cualquier transacción no se revierten de forma predeterminada y bloqueos se acaba de dejar allí hasta que se cierre la conexión. Si se devuelve al grupo de conexiones y se reutiliza, este no cuenta como como cierre.
Esta es la razón por SET XACT_ABORT ON
(SO1 otras preguntas, SO2) se recomienda
- 1. ¿Cómo almaceno e itero sobre un conjunto de resultados en un MySQL Stored Proc?
- 2. Cierre SqlConnection y SqlCommand C#
- 3. Confundido entre SqlCommand y SqlDataAdapter
- 4. PDO Stored Procedure valor devuelto
- 5. ¿Cuál es la diferencia entre Thread.Sleep (timeout) y ManualResetEvent.Wait (timeout)?
- 6. diferencia entre WebDriver Wait timeout y implicitlyWait timeout?
- 7. Reutilizando SqlCommand?
- 8. diferencia xp_sendmail y sp_send_dbmail proc
- 9. Diferencias entre Proc y Lambda
- 10. ADO.Net DataReader timeout issue
- 11. 'rescatar en rbuf_fill': Timeout :: Error (Timeout :: Error)
- 12. SQL Server Stored Proc tarda (mucho) más tiempo en ejecutarse que la misma consulta ejecutada desde texto en Management Studio
- 13. Zip usando Oracle Stored Procedure
- 14. SqlCommand o SqlDataAdapter?
- 15. MySQL Stored Procedure Error Handling
- 16. SqlCommand (using/Eliminación tema)
- 17. Parámetros SqlCommand tamaño confusión
- 18. Cuándo utilizar/proc y cuándo/dev
- 19. Pasando List <> a SQL Stored Procedure
- 20. En SAS, ¿cuál es la diferencia entre Proc Means y Proc Summary?
- 21. Parámetro In-Out para SqlCommand
- 22. Interpretar datos de/proc/[id]/mountstats o/proc/self/mountstats
- 23. Capistrano Deploy Timeout
- 24. maneja lwp timeout efectivamente
- 25. ¿Cómo desinfecta SqlCommand los parámetros?
- 26. SQLCommand/SQLConnection vs OleDbCommand/OleDbConnection
- 27. IMAP Idle Timeout
- 28. BroadcastReceiver onReceive timeout
- 29. Silverlight ClientHttp WebRequest timeout
- 30. shell_exec() timeout management & exec()
correcta, al menos volver a SQL 7 – gbn