Subject: Anzahl Verbinugen ermitteln mit exec sp_w

Hallo,
ich will die Anzahl der Verbindung eines bestimmten Benutzers auf dem SQL
Server ermitteln.
Dazu verwende ich
exec sp_who ‚Benutzer‘
Das geht auch soweit ganz gut. Jedoch verwende ich VB6 und habe eine
Connection erstellt und habe verschiedene Recordsets offen.

Wenn ich andere RecordSets offen habe, gibt mit die Prozedur
exec sp_who ‚Benutzer‘
jedoch immer eine Prozess mehr zurück, als ich erwartet habe.
Beispiel:
Ich habe eine Connection
Ein Prozess
Ich öffne einen Recorset
Ein Prozess
Ich öffnen einen zweiten Recorset
Ein Prozess
Ich frage mit sp_who ab, wieviele Prozesse offen sind.
Zwei Prozesse (obwohl eigentlich nur einer da sein sollte!!!)

Ich hoffe ihr versteht mein Problem.
Kann mir jemand helfen?

Zur Info: Ich brauche den Server seitigen Cursor. Also kann ich diesen nicht
auf Client ändern!

Anbei mein VB6 Code.

Private Sub Command1\_Click()
Dim DBName As String
Dim ConTest As ADODB.Connection
Dim SQLProvider As String
Dim UserName As String
Dim PWD As String
Dim Server As String
Dim AnzahlUserAufDatenbank As Long

 UserName = "Benutzer"
 PWD = "Passwort"
 DBName = "Datenbank"
 Server = "Servername"

 SQLProvider = "Provider=SQLOLEDB.1:stuck\_out\_tongue\_winking\_eye:ersist Security Info=False;User ID=" 
& UserName & ":stuck\_out\_tongue\_winking\_eye:assword=" & PWD & " ;Initial Catalog=" & DBName & ";Data 
Source=" & Server



 Set ConTest = New ADODB.Connection
 ConTest.ConnectionString = SQLProvider
 ConTest.Open
 MsgBox "Datenbank wurde geöffnet"

 Dim rsTEst As ADODB.Recordset
 Set rsTEst = New ADODB.Recordset
 Dim rsTEst2 As ADODB.Recordset
 Set rsTEst2 = New ADODB.Recordset
 Dim rsTEst3 As ADODB.Recordset
 Set rsTEst3 = New ADODB.Recordset




 With rsTEst
 .ActiveConnection = ConTest
 .CursorLocation = adUseServer

 End With

 rsTEst.Open "select \* from LF", , , adLockOptimistic
 'rsTEst.Close


 With rsTEst2
 .ActiveConnection = ConTest
 .CursorLocation = adUseServer

 End With

 rsTEst2.Open "select \* from BT", , , adLockOptimistic
 'rsTEst2.Close




 With rsTEst3
 .ActiveConnection = ConTest
 .CursorLocation = adUseServer

 End With

 rsTEst3.Open "exec sp\_who 'alacarte'", , , adLockOptimistic
 AnzahlUserAufDatenbank = 0
 Do While rsTEst3.EOF = False
 AnzahlUserAufDatenbank = AnzahlUserAufDatenbank + 1
 rsTEst3.MoveNext
 Loop
 rsTEst3.Close
 MsgBox "Anzahl: " & AnzahlUserAufDatenbank

 ConTest.Close
 MsgBox "Datenbank wurde geschlossen. "

End Sub

[MOD] - Pre-Tag eingefügt