Ich würde gerne die Beziehung zwischen Verbindungs-Timeout und Kommando-Timeout verstehen und wie man sich auf andere auswirkt. Bitte beachten Sie diesen Code als Beispiel.SqlDataReader Verbindungs-Timeout vs Kommando-Timeout
// declare the SqlDataReader, which is used in
// both the try block and the finally block
SqlDataReader rdr = null;
// create a connection object
SqlConnection conn = new SqlConnection("someconnstr");
// create a command object
SqlCommand cmd = new SqlCommand("select * from dbo.mytable", conn);
try
{
// open the connection
conn.Open();
// 1. get an instance of the SqlDataReader
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
// get the results of each column
Guid Id = (Guid)rdr["Id"];
string displayName = (string)rdr["Name"];
// print out the results
Console.WriteLine("{0}, {1}", Id, displayName);
}
Console.WriteLine("Reading done");
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
Wie pro MSDN link ist Befehl Timeout ein kumulativer Timeout für alle liest. Das heißt, wenn Sie Read() erneut aufrufen, dauert es weitere 30 Sekunden. Ich möchte Timeout so einstellen, dass ich für alle Datensätze eine maximale Zeitüberschreitung auferlegen kann.
Ist ein Verbindungstimeout eine gute Sache, um dies zu tun? In dem gegebenen Beispiel, wenn ich Verbindungs-Timeout auf 120 Sekunden setze und die While-Schleife nicht in 120 Sekunden beendet, wird es einen Timeout-Fehler werfen?
Diese Frage bezieht sich auf Stackoverflow question.
Dies sollte Ihre Frage beantworten: [Was ist der Unterschied zwischen SqlCommand.CommandTimeout und SqlConnection.ConnectionTimeout?] (Http://stackoverflow.com/questions/847264/what-is-the-difference-between-sqlcommand-commandtimeout -und-sqlconnection-conne) –
Meine Frage ist etwas anders. SqlConnection.ConnectionTimeout dient zum Zeitlimit zum Öffnen der Verbindung. Ich möchte maximale Zeit für das Lesen aller Datensätze (die gesamte Zeit, die die While-Schleife dauern kann) auferlegen. – murtazat
Was ist deine Argumentation für die maximale Zeit? Was hat Sie zu dem Schluss geführt, dass Sie eine maximale Zeitüberschreitung implementieren müssen? –