Hallo,
ich habe ein wirklich fieses Problem und weiß nicht, wo der Haken dabei sein soll. Ich arbeite in einer Microsoft SQL-Datenbank und will die Datensätze einer sehr großen Tabelle auslesen - der Quellcode unten ist auf das Wesentliche reduziert und verursacht den 'Fehler'. Da können dann schon mal 500.000 Datensätze anfallen. Die While-Schleife verursacht dann nach ca. 10.000 gelesenen Datensätzen das Blockieren von Inserts anderer User. Hierbei steht fest, dass wohl alle Tabellen der Datenbank keinen Insert mehr durchführen und das Ganze in einen Wartemodus geht. Erst wenn mein Programm das Dataset und die DB schließt (was gefühlt lange dauert), laufen auch alle inserts wieder. Die gleiche Funktionalität hatte ich damals in VB6 programmiert, allerdings mit Recordsets etc.pp., ohne dass es zu diesem Problem kam - das alte Programm läuft auch noch, also hat sich die Datenbank nicht verändert.
Das Ergebnis des SQL-Queries habe ich mir in einem Tool ausgeben lassen, d.h. die SQL-Anweisung macht genau, was sie soll. Auch ist die Verarbeitung in der Schleife völlig ok. Soll heißen: mein Programm läuft durch und ich könnte am Ende jubeln...wenn mir nicht zuvor die User die Tür eintreten würden
MySQL hat PRIORITY als weiteren Parameter für den ConnectString - das kennt MSSQL leider nicht. Hat jemand eine Idee, wie dieses Programm laufen kann ohne dass es andere behindert?
ich habe ein wirklich fieses Problem und weiß nicht, wo der Haken dabei sein soll. Ich arbeite in einer Microsoft SQL-Datenbank und will die Datensätze einer sehr großen Tabelle auslesen - der Quellcode unten ist auf das Wesentliche reduziert und verursacht den 'Fehler'. Da können dann schon mal 500.000 Datensätze anfallen. Die While-Schleife verursacht dann nach ca. 10.000 gelesenen Datensätzen das Blockieren von Inserts anderer User. Hierbei steht fest, dass wohl alle Tabellen der Datenbank keinen Insert mehr durchführen und das Ganze in einen Wartemodus geht. Erst wenn mein Programm das Dataset und die DB schließt (was gefühlt lange dauert), laufen auch alle inserts wieder. Die gleiche Funktionalität hatte ich damals in VB6 programmiert, allerdings mit Recordsets etc.pp., ohne dass es zu diesem Problem kam - das alte Programm läuft auch noch, also hat sich die Datenbank nicht verändert.
Das Ergebnis des SQL-Queries habe ich mir in einem Tool ausgeben lassen, d.h. die SQL-Anweisung macht genau, was sie soll. Auch ist die Verarbeitung in der Schleife völlig ok. Soll heißen: mein Programm läuft durch und ich könnte am Ende jubeln...wenn mir nicht zuvor die User die Tür eintreten würden

MySQL hat PRIORITY als weiteren Parameter für den ConnectString - das kennt MSSQL leider nicht. Hat jemand eine Idee, wie dieses Programm laufen kann ohne dass es andere behindert?
VB.NET-Quellcode
- Dim sConnectTestDB As String
- Dim connTestDB As SqlConnection
- Dim commandTestDB As SqlCommand
- Dim DataTestDB As SqlClient.SqlDataReader
- sConnectTestDB = "Persist Security Info=False;User ID=xy;Password='xy';Initial Catalog=TestDB;Data Source='...Servername...'"
- connTestDB = New SqlConnection(sConnectTestDB)
- commandTestDB = connTestDB.CreateCommand()
- commandTestDB.CommandText = "SELECT * from Tabelle"
- DataTestDB = commandTestDB.ExecuteReader()
- If DataTestDB.HasRows Then
- While DataTestDB.Read()
- Wert = DataTestDB.Item("ID")
- 'u.s.w.
- End While
- End If
- DataTestDB.Close()
- connTestDB.Close()