Limit czasu jest wymuszany przez ADO.NET. SQL Server nie zna czegoś takiego jak limit czasu polecenia. Klient platformy .NET wyśle polecenie TDS „uwaga”. Możesz zaobserwować to zachowanie w programie SQL Profiler, ponieważ ma zdarzenie „uwaga”.
Gdy SQL Server otrzyma anulowanie, anuluje aktualnie uruchomione zapytanie (tak jak robi to SSMS po naciśnięciu przycisku stop). Przerwie partię (tak jak w SSMS). Oznacza to, że nie można uruchomić żadnego kodu catch. Połączenie pozostanie aktywne.
Z mojego doświadczenia wynika, że transakcja zostanie natychmiast wycofana. Nie sądzę jednak, żeby było to gwarantowane.
TL; DR:Limit czasu w ADO.NET zachowuje się tak samo, jakbyś nacisnął stop w SSMS (lub wywołał SqlCommand.Cancel
).
Oto odniesienie do tego:https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-attention-attention-or-should-i-say -anuluj/ba-p/315511