Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Durante il recupero e l'aggiornamento dei dati tramite cursori di SQL Server, un'applicazione consumer del provider OLE DB di SQL Server Native Client è vincolata dagli stessi vincoli e considerazioni applicabili a qualsiasi altra applicazione client.
Solo le righe nei cursori di SQL Server partecipano al controllo di accesso ai dati simultaneo. Quando il consumer richiede un set di righe modificabile, il controllo di concorrenza viene controllato 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 delle transazioni possono causare ritardi significativi nel posizionamento delle righe se la progettazione dell'applicazione client consente alle transazioni di rimanere aperte per lunghi periodi di tempo. Per impostazione predefinita, il provider OLE DB di SQL Server Native Client usa il livello di isolamento read committed specificato da DBPROPVAL_TI_READCOMMITTED. Il provider OLE DB di SQL Server Native Client supporta l'isolamento di lettura dirty quando la concorrenza del set di righe è di sola lettura. Pertanto, il consumer può richiedere un livello di isolamento superiore in un set di righe modificabile, ma non può richiedere alcun livello inferiore correttamente.
Modalità di aggiornamento immediato e ritardato
In modalità di aggiornamento immediato, ogni chiamata a IRowsetChange::SetData causa un round trip a SQL Server. Se il consumer apporta più modifiche a una singola riga, è più efficiente inviare tutte le modifiche con una singola chiamata SetData .
In modalità di aggiornamento ritardato, viene eseguito un round trip in 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 non è aperto alcun oggetto transazione per il set di righe.
Quando si usa IRowsetUpdate::Update, il provider OLE DB di SQL Server Native Client tenta di elaborare ogni riga indicata. Si è verificato un errore a causa di dati, lunghezza o valori di stato non validi per qualsiasi riga non arresta l'elaborazione del provider OLE DB di SQL Server Native Client. È possibile modificare tutte o nessuna delle altre righe che partecipano all'aggiornamento. Il consumer deve esaminare la matrice prgRowStatus restituita per determinare l'errore di una riga specifica quando il provider OLE DB di SQL Server Native Client restituisce DB_S_ERRORSOCCURRED.
Un consumer non deve presupporre che le righe vengano elaborate in un ordine specifico. Se un consumer richiede l'elaborazione ordinata della modifica dei dati su più di una singola riga, il consumer deve stabilire tale ordine nella logica dell'applicazione e aprire una transazione per racchiudere il processo.