Domanda

Lavorare con SQL server con livello di isolamento "leggere snapshot impegnato", abbiamo quotidianamente a scrivere i dati nel database e leggere più avanti nel contesto della stessa transazione. Di solito durante la lettura dal database vediamo le nostre modifiche non, ma solo le modifiche apportate da altri commessi. Si presume che questo è il comportamento previsto.

Abbiamo ora trovato che in alcuni casi relativamente rari non vediamo i valori che abbiamo scritto -. Solo i valori precedentemente commessi

Tutte le idee che potrebbero causare l'incoerenza?

È stato utile?

Soluzione 2

Si scopre che si tratta di un'incoerenza conosciuta in SQL Server: quando si legge dal database di solito si vede modifiche non proprio di transazione (in tutti i livelli di isolamento), ma questo non è sempre garantito. Il lavoro attorno nel mio caso era di utilizzare with (readuncommitted), confidando un meccanismo di blocco a livello di applicazione che impedisce modifiche simultanee dello stesso dato.

Ho ricevuto la stessa risposta da due esperti di database indipendenti. Purtroppo, non ho trovato alcun riferimento scritto alla questione.

Altri suggerimenti

Ther sono alcuni buoni articoli su cosa potrebbe andare male. Forse potrebbe aiutare

Craig Freedman, Serializable vs. Snapshot Isolation Level Il nero / bianco di marmo analogia

Hugo Kornelis, 4 articoli "isolamento dello snapshot: Una minaccia per l'integrità ": DRI / FKS silenziosamente cambiando a diversi livelli di isolamento

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top