sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad gør SQL Server med en timeout-anmodning?

Timeout håndhæves af ADO.NET. SQL Server kender ikke sådan noget som en kommando-timeout. .NET-klienten sender en "attention" TDS-kommando. Du kan observere denne adfærd med SQL Profiler, fordi den har en "attention"-hændelse.

Når SQL Server modtager annulleringen vil den annullere den aktuelle forespørgsel (ligesom SSMS gør, når du trykker på stop-knappen). Det vil afbryde batchen (ligesom i SSMS). Det betyder, at ingen catch-kode kan køre. Forbindelsen forbliver i live.

Efter min erfaring vil transaktionen blive rullet tilbage med det samme. Jeg tror dog ikke, at dette er garanteret.

TL;DR:En timeout i ADO.NET opfører sig på samme måde, som hvis du havde trykket stop i SSMS (eller kaldet SqlCommand.Cancel ).

Her er reference til dette:https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-attention-attention-or-should-i-say -cancel-the/ba-p/315511



  1. Postgres SQL til at forespørge array-tekst[] i specifikt element

  2. Kan ikke oprette forbindelse til nogen af ​​de angivne MySQL-værter

  3. C# og MySql integration

  4. Få værdi baseret på maks. af en anden kolonne grupperet efter en anden kolonne