sql >> Databasteknik >  >> RDS >> Sqlserver

ADO.NET anropar T-SQL lagrad procedur orsakar ett SqlTimeoutException

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.



  1. ASCIISTR() Funktion i Oracle

  2. Grunderna för att ställa in MySQL på dedikerade servrar

  3. MySQL/PHP-fel:[2002] Endast en användning av varje socketadress (protokoll/nätverksadress/port) är normalt tillåten

  4. Hur MID()-funktionen fungerar i MySQL