När jag väl fastställt att det är ADO.NET-anslutningen som ligger bakom problemet, ledde den här tråden mig till svaret.
I princip har anslutningar via SQL Server Management Studio (SSMS) som standard SET ARITHABORT ON
. ADO.NET-anslutningar gör det inte.
Ställer in ARITHABORT OFF
och att köra frågan direkt via SSMS ger mig samma långsamma svarstid.
Den största skillnaden när du kör med eller utan den här inställningen är att en annan frågeplan skapas för de två samtalen. När ARITHABORT
var OFF
, skulle SSMS-kommandot använda den förkompilerade cachade frågeplanen som ADO.NET-anslutningen använde och därför timeout.
Genom att köra följande kommandon som administratör på databasen körs alla frågor som förväntat oavsett ARITHABORT
inställning.
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Jag kan bara anta att en kompilerad frågeplan blev korrupt eller ogiltig.
Jag kommer att gå med detta som lösningen (jag har röstat upp svaret) i den andra tråden
Tack.