Ändern der SqlConnection-Zeitüberschreitung
Ich versuche, um die Standardeinstellung zu überschreiben SqlConnection
timeout von 15 Sekunden und erhalte eine Fehlermeldung, dass die
Eigenschaft oder ein indexer kann nicht zugeordnet werden, da es schreibgeschützt ist.
Gibt es eine Möglichkeit, um dieses?
using (SqlConnection connection = new SqlConnection(Database.EstimatorConnection))
{
connection.Open();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
connection.ConnectionTimeout = 180; //This is not working
command.CommandText = "sproc_StoreData";
command.Parameters.AddWithValue("@TaskPlanID", order.Projects[0].TaskPlanID);
command.Parameters.AddWithValue("@AsOfDate", order.IncurDate);
command.ExecuteNonQuery();
}
}
Kommentar zu dem Problem - Öffnen
Meinst du, eine Verbindung timeout, nachdem Sie versuchen, um die Verbindung zu öffnen? meinst du commandtimeout?
Ich wirklich, wirklich nicht sehen, warum Sie die Eigenschaft schreibgeschützt. Shoulda gewesen, Lesen-schreiben, IMO.
Die Eigenschaft ist schreibgeschützt, nachdem Verbindung. Siehe andere Antworten zur Diskussion. ConnectionTimeout Auswirkungen timeout beim Versuch zu verbinden. es ist oft nützlich, diese zu erhöhen für Azure SQL DB. CommandTimeout Auswirkungen timeout beim ausführen einer Abfrage.
@Sam Pearson, Es ist lese- / Schreibzugriff, bis die Verbindung geöffnet wird, d.h. wenn die Verbindung.Open(); aufgerufen wird. Ab diesem Zeitpunkt ist der timer bereits läuft.
InformationsquelleAutor der Frage Haymak3r | 2012-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie, dass eine Zeitüberschreitung für eine bestimmte Abfrage, dann CommandTimeout ist der Weg in die Zukunft.
Seine Verwendung ist:
InformationsquelleAutor der Antwort Anil Mathew
Sie können den timeout-Wert in der Verbindungszeichenfolge, aber nachdem Sie verbunden haben, es ist read-only. Lesen Sie mehr auf http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx
Als Anil impliziert, ConnectionTimeout kann nicht sein, was Sie brauchen; es steuert, wie lange der ADO-Treiber warten, wenn das herstellen einer neuen Verbindung. Ihre Verwendung scheint darauf hinzudeuten, dass eine Notwendigkeit zu warten, länger als normal für eine bestimmte SQL-Abfrage ausführen, und in diesem Falle Anil ist genau richtig; verwenden CommandTimeout (R/W) für die voraussichtliche Fertigstellung Zeit für einen individuellen SqlCommand.
InformationsquelleAutor der Antwort KeithS
Können Sie immer fügen Sie es zu Ihrem Verbindungs-String:
InformationsquelleAutor der Antwort Justin Niessner
Einen saubereren Weg connectionString in der xml-Datei, zum Beispiel
Web.Confing(WepApplication)
oderApp.Config(StandAloneApplication)
.Durch code können Sie die Verbindung in dieser Art und Weise:
Können Sie festlegen
ConnectionTimeout
nur erstellen Sie eine Instanz.Als Beispiel, erstellen Sie diese änderung nicht Wert.
InformationsquelleAutor der Antwort daniele3004
Alte post, aber wie es kommt, für das, was ich suchte ich dachte, ich würde hinzufügen, einige Informationen zu diesem Thema. Ich wollte einen Kommentar hinzufügen, aber ich habe nicht genug rep.
Wie schon andere gesagt haben:
Verbindung.ConnectionTimeout verwendet wird, für die erste Verbindung
Befehl.CommandTimeout verwendet wird, für den einzelnen Suchvorgängen, updates, etc.
Aber:
Verbindung.ConnectionTimeout ist auch verwendet für commit und Rollback von Transaktionen.
Ja, das ist eine absolut unsinnige design-Entscheidung.
So, wenn Sie in ein timeout auf commit-oder rollback-Sie müssen diesen Wert erhöhen, durch die Verbindungszeichenfolge.
InformationsquelleAutor der Antwort Nick Thompson
Können Sie hinzufügen
Connection Timeout=180;
zu Ihrem Verbindungs-stringInformationsquelleAutor der Antwort Horev Ivan
Müssen Sie
command.CommandTimeout
InformationsquelleAutor der Antwort LewisT