1

分離レベル「コミットされたスナップショットの読み取り」でSQLサーバーを使用して、データベースにデータを定期的に書き込み、同じトランザクションのコンテキストでさらに読み取ります。通常、データベースから読み取ると、自分自身のコミットされていない変更が表示されますが、他の人によって行われたコミットされた変更のみが表示されます。これが予想される動作であると想定しました。

比較的まれなケースでは、作成した値が表示されず、以前にコミットされた値のみが表示されることがわかりました。

矛盾を引き起こしている可能性のあるアイデアはありますか?

4

2 に答える 2

0

これはSQLServerの既知の不整合であることが判明しました。データベースから読み取ると、通常、(すべての分離レベルで)独自のトランザクションのコミットされていない変更が表示されますが、これが常に保証されるわけではありません。私の場合の回避with (readuncommitted)策は、同じデータの同時変更を防ぐアプリケーションレベルのロックメカニズムを信頼して、を使用することでした。

私は2人の独立したデータベースの専門家から同じ答えを受け取りました。残念ながら、この問題への書面による言及は見つかりませんでした。

于 2009-05-20T13:35:19.003 に答える
0

何がうまくいかないかについての良い記事がいくつかあります。おそらく彼らは助けるかもしれません

Craig Freedman 著、シリアライズ可能 vs. スナップショット分離レベル 黒と白の大理石の例え

Hugo Kornelis、4 つの記事「スナップショット分離: 整合性に対する脅威」 : DRI/FK がサイレントに異なる分離レベルに変更

于 2009-04-22T11:22:54.693 に答える