2009-04-22 8 views
1

Beim Arbeiten mit dem SQL Server mit der Isolationsstufe "read committed snapshot" schreiben wir routinemäßig Daten in die Datenbank und lesen sie im Kontext derselben Transaktion weiter. Normalerweise sehen wir beim Lesen aus der Datenbank unsere eigenen nicht festgelegten Änderungen, aber nur von anderen vorgenommene Änderungen. Wir haben angenommen, dass dies das erwartete Verhalten ist.SQL Server - inkonsistentes Verhalten beim Lesen nicht festgeschriebener Änderungen derselben Transaktion

Wir haben jetzt festgestellt, dass wir in einigen relativ seltenen Fällen die Werte nicht sehen, die wir geschrieben haben - nur zuvor festgelegte Werte.

Irgendwelche Ideen, was die Inkonsistenz verursachen könnte?

Antwort

0

Es stellt sich heraus, dass dies eine bekannte Inkonsistenz in SQL Server: Wenn Sie Wenn Sie aus der Datenbank lesen, werden normalerweise nicht festgeschriebene Änderungen Ihrer eigenen Transaktion angezeigt (in allen Isolationsstufen), dies ist jedoch nicht immer gewährleistet. Die Arbeit in meinem Fall bestand darin, with (readuncommitted) zu verwenden und einem Sperrmechanismus auf Anwendungsebene zu vertrauen, der gleichzeitige Änderungen derselben Daten verhindert.

Ich erhielt die gleiche Antwort von zwei unabhängigen Datenbankexperten. Leider habe ich keinen schriftlichen Hinweis auf das Problem gefunden.

0

Es gibt einige gute Artikel darüber, was schief gehen könnte. Vielleicht könnten sie

helfen

Craig Freedman, Serializable vs. Snapshot Isolation Level Die schwarze/weiße Marmor Analogie

Hugo Kornelis, 4 articles "Snapshot isolation: A threat for integrity": DRI/FKs Wechsel still zu verschiedenen Isolationsstufen

+0

Schöne Artikel, aber sie diskutieren nicht die Frage des Lesens von Daten in der gleichen Transaktion geändert. –

+0

Der erste Artikel erwähnt schwarze/weiße Murmeln. Rollst du zurück? Die zweite vier Erwähnung FKs wechselnde Isolationsstufe. Wenn Sie in der gleichen TXN Ihre eigenen vorverlegten Daten lesen, wurde diese zurückgesetzt? Oder Ihre Isolationsstufe hat sich geändert ... was die Dinge verwirren kann, so dass Sie Ihre eigenen vor der Änderung festgeschriebenen Daten lesen. – gbn

+0

Meine Probleme beziehen sich nicht auf Rollback (siehe separate Antwort) –