Jakmile jsem zjistil, že kořenem problému je připojení ADO.NET, toto vlákno mě přivedlo k odpovědi.
V zásadě připojení přes Sql Server Management Studio (SSMS) ve výchozím nastavení mají SET ARITHABORT ON
. Připojení ADO.NET ne.
Nastavení ARITHABORT OFF
a provedení dotazu přímo prostřednictvím SSMS mi poskytuje stejně pomalou dobu odezvy.
Hlavním rozdílem při spuštění s tímto nastavením nebo bez něj je vytvoření jiného plánu dotazů pro obě volání. Když ARITHABORT
bylo OFF
, příkaz SSMS použije předkompilovaný plán dotazů uložený v mezipaměti, který používá připojení ADO.NET, a proto vypršel časový limit.
Spuštěním následujících příkazů jako správce v databázi se všechny dotazy spustí podle očekávání bez ohledu na ARITHABORT
nastavení.
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Mohu pouze předpokládat, že se zkompilovaný plán dotazů poškodil nebo stal neplatným.
Vezmu to jako řešení (hlasoval jsem pro odpověď) v jiném vláknu
Děkuji.