Časový limit je vynucený ADO.NET. SQL Server nezná něco jako časový limit příkazu. Klient .NET odešle příkaz TDS "pozor". Toto chování můžete pozorovat pomocí SQL Profiler, protože má událost "pozornost".
Když SQL Server obdrží zrušení, zruší aktuálně spuštěný dotaz (stejně jako SSMS, když stisknete tlačítko stop). Dávku přeruší (stejně jako v SSMS). To znamená, že nelze spustit žádný catch kód. Spojení zůstane živé.
Podle mých zkušeností bude transakce okamžitě vrácena. Nemyslím si však, že je to zaručeno.
TL;DR:Časový limit v ADO.NET se chová stejně, jako kdybyste stiskli stop v SSMS (nebo zavolali SqlCommand.Cancel
).