Utilizzo dell'isolamento dello snapshot
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
In SQL Server 2005 (9.x) è stato introdotto un nuovo livello di isolamento dello "snapshot" destinato a migliorare la concorrenza delle applicazioni per l'elaborazione delle transazioni online (OLTP). Nelle versioni precedenti di SQL Server la concorrenza era basata esclusivamente sul blocco, il quale può provocare problemi, dovuti in particolare al blocco critico, ad alcune applicazioni. L'isolamento dello snapshot dipende dai miglioramenti apportati al controllo delle versioni delle righe e ha lo scopo di migliorare le prestazioni evitando scenari di blocco in lettura/scrittura.
Le transazioni avviate con l'isolamento dello snapshot leggono uno snapshot del database che risale all'avvio della transazione. Se aperti nel contesto di una transazione snapshot, i cursori server keyset statici e dinamici si comporteranno come cursori statici aperti in transazioni serializzabili. Quando tuttavia i cursori vengono aperti con il livello di isolamento dello snapshot, non vengono acquisiti blocchi. In questo modo viene ridotto il numero di blocchi nel server.
Driver OLE DB per SQL Server
In OLE DB Driver per SQL Server sono disponibili miglioramenti che sfruttano l'isolamento dello snapshot introdotto in SQL Server 2005 (9.x). Tra questi miglioramenti figurano le modifiche ai set di proprietà DBPROPSET_DATASOURCEINFO e DBPROPSET_SESSION.
DBPROPSET_DATASOURCEINFO
Il set di proprietà DBPROPSET_DATASOURCEINFO è stato modificato per indicare che il livello di isolamento dello snapshot è supportato dall'aggiunta del valore DBPROPVAL_TI_SNAPSHOT utilizzato nella proprietà DBPROP_SUPPORTEDTXNISOLEVELS. Questo nuovo valore indica che il livello di isolamento dello snapshot è supportato indipendentemente dall'abilitazione del controllo delle versioni nel database. La tabella seguente elenca i valori DBPROP_SUPPORTEDTXNISOLEVELS:
ID proprietà | Descrizione |
---|---|
DBPROP_SUPPORTEDTXNISOLEVELS | Tipo: VT_I4 L/S: Sola lettura Descrizione: maschera di bit che specifica i livelli di isolamento delle transazioni supportati. Combinazione di zero o più dei valori seguenti: DBPROPVAL_TI_CHAOS DBPROPVAL_TI_READUNCOMMITTED DBPROPVAL_TI_BROWSE DBPROPVAL_TI_CURSORSTABILITY DBPROPVAL_TI_READCOMMITTED DBPROPVAL_TI_REPEATABLEREAD DBPROPVAL_TI_SERIALIZABLE DBPROPVAL_TI_ISOLATED DBPROPVAL_TI_SNAPSHOT |
DBPROPSET_SESSION
Il set di proprietà DBPROPSET_SESSION è stato modificato per indicare che il livello di isolamento dello snapshot è supportato dall'aggiunta del valore DBPROPVAL_TI_SNAPSHOT utilizzato nella proprietà DBPROP_SESS_AUTOCOMMITISOLEVELS. Questo nuovo valore indica che il livello di isolamento dello snapshot è supportato indipendentemente dall'abilitazione del controllo delle versioni nel database. La tabella seguente elenca i valori DBPROP_SESS_AUTOCOMMITISOLEVELS:
ID proprietà | Descrizione |
---|---|
DBPROP_SESS_AUTOCOMMITISOLEVELS | Tipo: VT_I4 L/S: Sola lettura Descrizione: specifica una maschera di bit che indica il livello di isolamento delle transazioni durante la modalità di autocommit. I valori che è possibile impostare in questa maschera di bit sono uguali a quelli che è possibile impostare per DBPROP_SUPPORTEDTXNISOLEVELS. |
Nota
Si verifica l'errore DB_S_ERRORSOCCURRED o DB_E_ERRORSOCCURRED se DBPROPVAL_TI_SNAPSHOT viene impostato quando si usano versioni di SQL Server precedenti a SQL Server 2005 (9.x).
Per altre informazioni sul supporto dell'isolamento dello snapshot nelle transazioni, vedere Supporto delle transazioni locali.
Vedi anche
Driver OLE DB per funzionalità di SQL Server
Proprietà e comportamenti dei set di righe