sql >> Database >  >> RDS >> Sqlserver

ADO.NET aanroepen van T-SQL Stored Procedure veroorzaakt een SqlTimeoutException

Toen ik eenmaal had vastgesteld dat het de ADO.NET-verbinding is die aan de basis van het probleem ligt, leidde deze thread me naar het antwoord.

In principe hebben verbindingen via Sql Server Management Studio (SSMS) standaard SET ARITHABORT ON . ADO.NET-verbindingen niet.

ARITHABORT OFF instellen en het rechtstreeks uitvoeren van de query via SSMS geeft me dezelfde trage reactietijd.

Het belangrijkste verschil bij het uitvoeren met of zonder deze instelling is dat er een ander queryplan wordt gemaakt voor de twee aanroepen. Wanneer ARITHABORT was OFF , zou de SSMS-opdracht het vooraf gecompileerde queryplan in de cache gebruiken dat de ADO.NET-verbinding gebruikte, en dus een time-out.

Door de volgende opdrachten uit te voeren als beheerder op de database, worden alle query's uitgevoerd zoals verwacht, ongeacht de ARITHABORT instelling.

DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

Ik kan alleen maar aannemen dat een gecompileerd zoekplan corrupt of ongeldig is geworden.

Ik zal dit gebruiken als de oplossing (ik heb op het antwoord gestemd) in de andere thread

Bedankt.



  1. Hoe LIKE te gebruiken in SQL

  2. Een ouder op het hoogste niveau vinden in SQL

  3. ORA-28000:het account is vergrendeld, fout wordt vaak weergegeven

  4. Hoe bepaal je het aantal dagen in een maand in SQL Server?