ADO.NET aplica el tiempo de espera. SQL Server no conoce el tiempo de espera de un comando. El cliente .NET enviará un comando TDS de "atención". Puede observar este comportamiento con SQL Profiler porque tiene un evento de "atención".
Cuando SQL Server recibe la cancelación, cancelará la consulta que se está ejecutando actualmente (tal como lo hace SSMS cuando presiona el botón de detener). Cancelará el lote (al igual que en SSMS). Esto significa que no se puede ejecutar ningún código catch. La conexión permanecerá viva.
En mi experiencia, la transacción se revertirá de inmediato. Sin embargo, no creo que esto esté garantizado.
TL; DR:un tiempo de espera en ADO.NET se comporta igual que si hubiera presionado detener en SSMS (o llamado SqlCommand.Cancel
).
Aquí hay una referencia para esto:https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-attention-attention-or-should-i-say -cancelar-el/ba-p/315511