Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
När data hämtas och uppdateras via SQL Server-kursorer är en konsumentapplikation för SQL Server Native Client OLE DB-leverantör bunden av samma överväganden och begränsningar som gäller för alla andra klientapplikationer.
Endast rader i SQL Server-kursorer deltar i samtidig dataåtkomstkontroll. När konsumenten begär en modifierbar raduppsättning styrs samtidighetskontrollen av DBPROP_LOCKMODE. För att ändra nivån av samtidig åtkomstkontroll sätter konsumenten egenskapen DBPROP_LOCKMODE innan raduppsättningen öppnas.
Transaktionsisoleringsnivåer kan orsaka betydande fördröjningar i radpositionering om klientapplikationsdesignen låter transaktioner vara öppna under långa perioder. Som standard använder den inbyggda klient OLE DB-leverantören SQL Server den läs-committerade isoleringsnivån som anges av DBPROPVAL_TI_READCOMMITTED. SQL Server Native Client OLE DB-leverantören stödjer dirty read isolation när raduppsättningssamvarigheten är skrivskyddad. Därför kan konsumenten begära en högre nivå av isolering i en modifierbar raduppsättning men kan inte begära någon lägre nivå framgångsrikt.
Omedelbara och fördröjda uppdateringslägen
I omedelbar uppdateringsläge orsakar varje anrop till IRowsetChange::SetData en rundresa till SQL Server. Om konsumenten gör flera ändringar i en enda rad är det mer effektivt att skicka alla ändringar med ett enda SetData-anrop .
I fördröjd uppdateringsläge görs en rundresa till SQL Server för varje rad som anges i parametrarna cRows och rghRows i IRowsetUpdate::Update.
I båda lägena representerar en rundresa en distinkt transaktion när inget transaktionsobjekt är öppet för radmängden.
När du använder IRowsetUpdate::Update, försöker SQL Server Native Client OLE DB-leverantören bearbeta varje angiven rad. Ett fel som uppstår på grund av ogiltig data, längd eller statusvärden för någon rad stoppar inte SQL Server Native Client OLE DB-leverantörens bearbetning. Alla eller inga av de andra raderna som deltar i uppdateringen kan ändras. Konsumenten måste undersöka den returnerade prgRowStatus-arrayen för att avgöra fel för en specifik rad när den SQL Server Native Client OLE DB-leverantören returnerar DB_S_ERRORSOCCURRED.
En konsument bör inte anta att rader behandlas i någon specifik ordning. Om en konsument kräver ordnad bearbetning av dataändring över mer än en rad bör konsumenten etablera den ordningen i applikationslogiken och öppna en transaktion för att omsluta processen.