Timeout upprätthålls av ADO.NET. SQL Server känner inte till något sådant som en kommando timeout. .NET-klienten skickar ett "attention" TDS-kommando. Du kan observera detta beteende med SQL Profiler eftersom det har en "attention"-händelse.
När SQL Server tar emot avbokningen kommer den att avbryta den aktuella frågan (precis som SSMS gör när du trycker på stoppknappen). Det kommer att avbryta batchen (precis som i SSMS). Det betyder att ingen fångstkod kan köras. Anslutningen förblir vid liv.
Enligt min erfarenhet kommer transaktionen att återställas omedelbart. Jag tror dock inte att detta är garanterat.
TL;DR:En timeout i ADO.NET fungerar på samma sätt som om du hade tryckt på stopp i SSMS (eller kallat SqlCommand.Cancel
).
Här är referens för detta:https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-attention-attention-or-should-i-say -cancel-the/ba-p/315511