Hallo,
ich möchte in einer MS-SQL Datenbank einen Datensatz versperren. Es handelt sich dabei um einen Nummernkreiszähler, auf den auch andere zeitgleich zugreifen. Nach vielen Experimenten kam schlussendlich das hier heraus:
Es wirkt, allerdings passiert das Aufheben der Sperre an einem zweiten Arbeitsplatz erst nach dem Beenden des Programmes. Ich finde da keinen Fehler. In meinem Fall hat er das Commit durchlaufen und die dann die Verbindung geschlossen, das habe ich im Debugger nachvollziehen können. Hat jemand eine Idee, was da falsch laufen könnte?
ich möchte in einer MS-SQL Datenbank einen Datensatz versperren. Es handelt sich dabei um einen Nummernkreiszähler, auf den auch andere zeitgleich zugreifen. Nach vielen Experimenten kam schlussendlich das hier heraus:
VB.NET-Quellcode
- Imports System.Data.SqlClient
- Imports System.Data.Odbc
- ...
- Public sTransaction As SqlTransaction
- Public command As SqlCommand
- Public conn as SQLConnections
- Transaction = conn.BeginTransaction("TestTransaction")
- command.Transaction = sTransaction
- Try
- command.CommandText = "Update xyz Set Id = 1"
- command.ExecuteNonQuery()
- Catch ex As Exceptions
- Transaction.Rollback()
- conn.close
- return false
- End Try
- sTransaction.Commit()
- conn.close
- return true
Es wirkt, allerdings passiert das Aufheben der Sperre an einem zweiten Arbeitsplatz erst nach dem Beenden des Programmes. Ich finde da keinen Fehler. In meinem Fall hat er das Commit durchlaufen und die dann die Verbindung geschlossen, das habe ich im Debugger nachvollziehen können. Hat jemand eine Idee, was da falsch laufen könnte?