Aggiornamento dei dati nei cursori di SQL Server

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Download del driver OLE DB

In caso di recupero e di aggiornamento di dati mediante cursori SQL Server, un'applicazione consumer OLE DB Driver per SQL Server viene associata in base a considerazioni e vincoli identici a quelli che si applicano a qualsiasi altra applicazione client.

Solo le righe dei cursori SQL Server partecipano al controllo di accesso ai dati simultaneo. Quando il consumer richiede un set di righe modificabile, il controllo della concorrenza viene effettuato da DBPROP_LOCKMODE. Per modificare il livello di controllo di accesso simultaneo, il consumer imposta la proprietà DBPROP_LOCKMODE prima di aprire il set di righe.

I livelli di isolamento della transazione possono provocare ritardi significativi nel posizionamento delle righe se la progettazione delle applicazioni client lascia aperte le transazioni per lunghi periodi di tempo. Per impostazione predefinita, il driver OLE DB per SQL Server usa il livello di isolamento Read Committed specificato da DBPROPVAL_TI_READCOMMITTED. OLE DB Driver per SQL Server supporta l'isolamento della lettura dirty quando la concorrenza del set di righe è di sola lettura. In un set di righe modificabile il consumer può pertanto richiedere un livello di isolamento superiore ma non inferiore.

Modalità di aggiornamento immediato e posticipato

In modalità di aggiornamento immediato, ogni chiamata a IRowsetChange::SetData provoca un round trip al computer SQL Server. Se il consumer apporta più modifiche a una sola riga, risulta più efficiente inviare tutte le modifiche con un'unica chiamata a SetData.

In modalità di aggiornamento posticipato, viene eseguito un round trip al computer SQL Server per ogni riga indicata nei parametri cRows e rghRows di IRowsetUpdate::Update.

In entrambe le modalità un round trip rappresenta una transazione distinta quando per il set di righe non è aperto alcun oggetto transazione.

Quando si usa IRowsetUpdate::Update, OLE DB Driver per SQL Server prova a elaborare ogni riga indicata. Eventuali errori dovuti a valori di stato, lunghezza o dati non validi per una riga non determinano l'interruzione dell'elaborazione del driver OLE DB per SQL Server. È possibile che vengano modificate tutte o nessuna delle altre righe che partecipano all'aggiornamento. Quando il driver OLE DB per SQL Server restituisce DB_S_ERRORSOCCURRED, il consumer deve esaminare la matrice prgRowStatus restituita per determinare l'errore per una riga specifica.

Un consumer non deve presupporre che le righe vengano elaborate in base a un ordine specifico. Se un consumer richiede un'elaborazione ordinata di modifica dei dati su più di una riga, deve stabilire l'ordine nella logica dell'applicazione e aprire una transazione per includere il processo.

Vedi anche

Aggiornamento dei dati nei set di righe