sql-db connection und Dataadapter Time out

06/10/2007 - 10:48 von Carsten Schade | Report spam
Hi!

Ich habe ein Problem:

Ich will eine relativ große Datenbank (2 GB und 4 Mio Datensàtze) abfragen
und bekomme eine Timeout-Meldung nach 30 Sekunden, egal welchen Timeout ich
im Connection String eingebe. Kann es am SQL-Command liegen, oder was làuft
da nicht?


Public Function getSQLTable(ByVal strSQL As String) As DataTable
Dim connSQL As New SqlConnection("Data Source=XXX\SQLEXPRESS;Initial
Catalog=pep-db;Integrated Security=True;Connection Timeout00")
Dim da As New SqlDataAdapter(strSQL, connSQL)
Dim dt As New DataTable

Try
connSQL.Open()
da.Fill(dt)
connSQL.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
getSQLTable = dt
End Function
 

Lesen sie die antworten

#1 Peter Götz
06/10/2007 - 12:15 | Warnen spam
Hallo Carsten,

Ich will eine relativ große Datenbank (2 GB und
4 Mio Datensàtze) abfragen und bekomme eine
Timeout-Meldung nach 30 Sekunden,



Welchen TimeOut bekommst Du?
ConnectionTimout oder CommandTimeout?
Ich würde mal raten es ist CommandTimeOut.


egal welchen Timeout ich im Connection String
eingebe.



Wenn Du eine grosse Datenmenge liest, dann hat
das nichts mit Deiner Connection zu tun, sondern
mit dem gerade auszuführenden Command und da
nützt es nichts, wenn Du ConnectionTimeOut
heraufsetzt.


Kann es am SQL-Command liegen, oder was làuft
da nicht?



Dein Command braucht für die vielen Datensàtze eben
seine Zeit und die musst Du ihm geben, indem Du
CommandTimout Deines Commandobjektes entsprechend
setzt.



Public Function getSQLTable(ByVal strSQL As String) As
DataTable
Dim connSQL As New SqlConnection("Data Source> XXX\SQLEXPRESS;Initial
Catalog=pep-db;Integrated Security=True;Connection Timeout00")



"Connection Timeout" bestimmt, wie lange auf den
Befehlsabschluss beim Herstellen der Verbindung (Connection)
gewartet wird.

Dein Problem ist aber nicht, dass das Herstellen der Verbindung
lange dauert, sondern das Übertragen der mit Deinem
Select-Statement angeforderten Daten. Also musst Du

Command.CommandTimeout = genügend_grosser_Wert

setzen oder eben die zu übertragende Datenmenge durch
eine entsprechende Where-Klausel einschrànken.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen