Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Que fait SQL Server avec une requête expirée ?

Le délai d'attente est appliqué par ADO.NET. SQL Server ne connaît pas une chose telle qu'un délai d'attente de commande. Le client .NET enverra une commande TDS "attention". Vous pouvez observer ce comportement avec SQL Profiler car il a un événement "attention".

Lorsque SQL Server reçoit l'annulation, il annule la requête en cours d'exécution (tout comme SSMS le fait lorsque vous appuyez sur le bouton d'arrêt). Il abandonnera le lot (comme dans SSMS). Cela signifie qu'aucun code catch ne peut s'exécuter. La connexion restera active.

D'après mon expérience, la transaction sera annulée immédiatement. Je ne pense pas que cela soit garanti cependant.

TL; DR :un délai d'expiration dans ADO.NET se comporte de la même manière que si vous aviez appuyé sur stop dans SSMS (ou appelé SqlCommand.Cancel ).

Voici la référence pour cela :https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-attention-attention-or-should-i-say -annuler-le/ba-p/315511