Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O que o SQL Server faz com uma solicitação expirada?


O tempo limite é imposto pelo ADO.NET. O SQL Server não conhece um tempo limite de comando. O cliente .NET enviará um comando TDS "atenção". Você pode observar esse comportamento com o SQL Profiler porque ele tem um evento de "atenção".

Quando o SQL Server receber o cancelamento, ele cancelará a consulta em execução no momento (assim como o SSMS faz quando você pressiona o botão Parar). Ele irá abortar o lote (assim como no SSMS). Isso significa que nenhum código catch pode ser executado. A conexão permanecerá viva.

Na minha experiência, a transação será revertida imediatamente. Eu não acho que isso é garantido embora.

TL;DR:Um tempo limite no ADO.NET se comporta como se você tivesse pressionado parar no SSMS (ou chamado SqlCommand.Cancel ).

Aqui está a referência para isso:https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-attention-attention-or-should-i-say -cancelar-o/ba-p/315511