Времето за изчакване се налага от ADO.NET. SQL Server не познава такова нещо като таймаут на команда. .NET клиентът ще изпрати TDS команда "внимание". Можете да наблюдавате това поведение с SQL Profiler, защото има събитие "внимание".
Когато SQL Server получи анулирането, той ще отмени текущо изпълняваната заявка (точно както прави SSMS, когато натиснете бутона за спиране). Той ще прекрати партидата (точно както в SSMS). Това означава, че не може да се изпълнява код за улавяне. Връзката ще остане жива.
Според моя опит транзакцията ще бъде отменена незабавно. Не мисля обаче, че това е гарантирано.
TL; DR:Изчакване в ADO.NET се държи по същия начин, както ако сте натиснали стоп в SSMS (или сте извикали SqlCommand.Cancel
).
Ето справка за това:https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-attention-attention-or-should-i-say -cancel-the/ba-p/315511