Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Che cosa fa SQL Server con una richiesta scaduta?

Il timeout è imposto da ADO.NET. SQL Server non conosce una cosa come un timeout di comando. Il client .NET invierà un comando TDS "attenzione". Puoi osservare questo comportamento con SQL Profiler perché ha un evento di "attenzione".

Quando SQL Server riceve l'annullamento, cancellerà la query attualmente in esecuzione (proprio come fa SSMS quando si preme il pulsante di arresto). Interromperà il batch (proprio come in SSMS). Ciò significa che nessun codice catch può essere eseguito. La connessione rimarrà attiva.

Secondo la mia esperienza, la transazione verrà annullata immediatamente. Tuttavia, non credo che questo sia garantito.

TL;DR:un timeout in ADO.NET si comporta come se avessi premuto stop in SSMS (o chiamato SqlCommand.Cancel ).

Ecco un riferimento per questo:https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-attention-attention-or-should-i-say -cancel-the/ba-p/315511