Announcement

Collapse
No announcement yet.

Transaktions Isolation mit SQL Server 2000

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Transaktions Isolation mit SQL Server 2000

    Hallo,
    ich veruche mich gerade zum ersten mal an den ADO Komponenten unter Delphi 7 und SQL Server 2000.
    Ich habe nun eine Transaktion in der ich mit ADOQuery einige Werte abrufe, diese in Delphi Variablen speichere und verändere und dann mit ADOCommand ein Update mache. Nun möchte mit einer anderen Transaktion gleichzeitig diese Daten mit ADOQuery vor dem Commit der ersten Transaktion lesen.
    Die zweite Transaktion gibt mir aber immer die veränderten Daten als Ergebnis zurück, obwohl diese eigendlich nicht die Updates lesen darf, da "SET Transaction isolation Level Serializable" am Anfang gesetzt habe. Kann mir jemand sagen warum der dennoch die upgedateten Daten liesst und wie ich es verhindern kann ? Gruss Nils

  • #2
    Bist du dir sicher das das ADOCommand Object in der ersten Transaktion mitläuft und nicht selber eine Connection aufmacht mit einer eigenen Transaktion und diese sofort abschließt?

    Bei Serializable solltes du eigentlich gar kein Ergebnis erhalten da ja die Daten gesperrt sind. Ausser du arbeitest mit dem Tablehint NOLOCK dann bist du natürlich wieder bei einem Dirty Read wie du ihn scheinbar beobachtest.

    Du solltest mal versuchen während des Debuggen der Anwendung gleichzeitig im Enterprise Manager die 'aktuelle Aktivität' zu beobachten.

    Ral

    Comment

    Working...
    X