Condividi tramite


Livelli di isolamento delle transazioni di cursore

Il comportamento di blocco delle transazioni di un cursore specifico è determinato dalle impostazioni di concorrenza del cursore, dagli hint di blocco specificati nell'istruzione SELECT del cursore e dalle opzioni per il livello di isolamento della transazione.

MicrosoftSQL Server supporta i livelli di isolamento delle transazioni di cursore seguenti:

  • Read Committed
    In SQL Server viene acquisito un blocco condiviso durante la lettura di una riga in un cursore, ma il blocco viene tuttavia rilasciato al termine dell'operazione di lettura. Poiché le richieste di blocco condiviso vengono bloccate da un blocco esclusivo, a un cursore viene impedita la lettura di una riga aggiornata da un'altra attività, ma di cui non è ancora stato eseguito il commit. Read Committed è il valore predefinito del livello di isolamento sia in SQL Server che in ODBC.

  • Read Uncommitted
    In SQL Server non viene richiesto alcun blocco durante la lettura di una riga in un cursore e i blocchi esclusivi non vengono applicati. È possibile popolare i cursori con valori già aggiornati e di cui non è ancora stato eseguito il commit. L'utente pertanto ignora tutti i meccanismi di controllo delle transazioni di blocco di SQL Server.

  • Repeatable Read o Serializable
    In SQL Server viene richiesto un blocco condiviso per ogni riga che viene letta nel cursore, in modo analogo all'impostazione READ COMMITTED. Se tuttavia il cursore viene aperto all'interno di una transazione, i blocchi condivisi vengono mantenuti attivi fino alla fine della transazione anziché essere rilasciati dopo la lettura della riga. Questa impostazione equivale all'utilizzo dell'opzione HOLDLOCK in un'istruzione SELECT.

  • Snapshot
    In SQL Server non viene richiesto alcun blocco durante la lettura di una riga in un cursore e i blocchi esclusivi non vengono applicati. Il cursore viene popolato con i valori relativi al momento del primo avvio della transazione. I blocchi di scorrimento vengono comunque richiesti indipendentemente dall'utilizzo dell' isolamento dello snapshot.