Sql Ausnahme mit .net 4 & EF

8

wir verwenden .net 4 MVC2 mit EF & amp; SQL Server 2005.

Für einige Anfragen, und es passiert selten, und nur wenn wir die Suche durchführen, die mit Klassen implementiert wird, die gespeicherten Prozeduren zugeordnet sind, die Volltextsuche durchführen, bekommen wir die Ausnahme:

%Vor%

Wenn die Suche nach dem Auftreten des Fehlers wiederholt wird (mit demselben oder einem anderen Begriff), funktioniert sie regelmäßig.

Alle Vorschläge gut geschätzt

Danke

- MB

THOUGHT 1: Die Ausnahme scheint zu passieren, nachdem die Verbindung zu SQL-Server hergestellt wurde, und während die gespeicherte Prozedur ausgeführt wird, bin ich richtig? Wenn dies der Fall ist, müsste ich das Zeitlimit für die Abfrageausführung und nicht das Verbindungstimeout verlängern? Ist das möglich, wo?

Gedanke 2: Vielleicht irre ich mich und das könnte eine schale Verbindung im Pool sein? In der Java-Welt können Sie die SQL übergeben, die auf der Verbindung ausgeführt wird, bevor die App es erhält, um sicherzustellen, dass die Verbindung geöffnet ist und funktioniert? Könnte das das verursachen? Ich konnte eine solche Option nicht in Ссылка finden

Gedanke 3: Ich bin verloren:)

    
Massive Boisson 09.12.2010, 09:51
quelle

3 Antworten

14

Sie können versuchen, die ObjectContext.CommandTimeout -Eigenschaft festzulegen :

  

Ruft den Zeitüberschreitungswert in Sekunden für alle Objektkontextvorgänge ab oder legt diesen fest. Ein Nullwert gibt an, dass der Standardwert des zugrunde liegenden Anbieters verwendet wird.

    
Jeff Ogata 09.12.2010, 14:00
quelle
1

Ja, versuchen Sie, das Verbindungstimeout zu erhöhen, das in web.config:

ist %Vor% Haben Sie tatsächlich versucht zu sehen, wie lange der SPROC ausführt, wenn Sie ihn manuell ausführen?

    
RPM1984 09.12.2010 10:14
quelle
1

Ich habe EF 4.3.1, SQL 2008 verwendet und hatte das gleiche Problem mit einer EF LINQ-Abfrage, die länger als die Standard 30 Sekunden dauert.

Also habe ich den "Connection Timeout = 120;" in der Verbindungszeichenfolge.

Überschreibe dann den DbContext-Konstruktor und setze alle Timeouts für die Verwendung des Verbindungstimeouts aus der Verbindungszeichenfolge;

%Vor%

Wenn Sie das Zeitlimit für bestimmte Abfragen nur erhöhen wollten, entfernen Sie den Konstruktor und setzen Sie ihn wie gewünscht;

%Vor%     
Adam 24.03.2012 23:51
quelle

Tags und Links