Ho una transazione di lunga durata (chiamata, diciamo, T1) che esegue alcune eliminazioni, aggiornamenti e inserimenti su una tabella in SQL Server 2008 R2. Allo stesso tempo, un altro processo esegue periodicamente istruzioni select da questa tabella.
Con le impostazioni di isolamento predefinite (LEGGI IMPEGNATO, penso?), T1 blocca l'esecuzione di tutte le istruzioni selezionate fino a quando la transazione non viene confermata o ripristinata.
Quello che mi piacerebbe vedere è che le istruzioni selezionate funzionino su dati coerenti anche mentre la transazione è in corso. Credo che l'isolamento SNAPSHOT possa essere d'aiuto, ma non sono sicuro che stia andando nella giusta direzione. Questo sarebbe il miglior livello di isolamento per questa applicazione?
In secondo luogo, non ho alcun controllo sul processo che chiama le istruzioni select, ma ho il controllo sull'applicazione .NET che chiama T1. Eventuali modifiche al livello di isolamento sarebbero necessarie sia per le istruzioni select sia per T1 o sarebbe sufficiente contrassegnare solo T1 come con un livello di isolamento diverso?