Share via


Werken met isolatie van momentopnamen

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)SQL-database in Microsoft Fabric

OLE DB-stuurprogramma downloaden

SQL Server 2005 (9.x) introduceerde een nieuw "snapshot" isolatieniveau dat bedoeld is om gelijktijdigheid voor online transactieverwerking (OLTP)-applicaties te verbeteren. In eerdere versies van SQL Server was gelijktijdigheid uitsluitend gebaseerd op locking, wat blokkerings- en deadlock-problemen kan veroorzaken voor sommige applicaties. Snapshot-isolatie is afhankelijk van verbeteringen in rijversiebeheer en is bedoeld om de prestaties te verbeteren door scenario's van blokkering tussen lezer en schrijver te vermijden.

Transacties die onder snapshot-isolatie beginnen, lezen een databasesnapshot op het moment dat de transactie begint. Keyset-, dynamische en statische servercursors, geopend binnen een snapshot-transactiecontext, gedragen zich vergelijkbaar met statische cursors die zijn geopend binnen serialiseerbare transacties. Wanneer de cursors echter onder de snapshot worden geopend, worden isolatie-niveauvergrendelingen niet genomen. Dit feit kan het blokkeren op de server verminderen.

OLE DB-stuurprogramma voor SQL Server

De OLE DB Driver voor SQL Server heeft verbeteringen die gebruikmaken van de snapshot-isolatie die is geïntroduceerd in SQL Server 2005 (9.x). Deze verbeteringen omvatten wijzigingen in de DBPROPSET_DATASOURCEINFO en DBPROPSET_SESSION property sets.

DBPROPSET_DATASOURCEINFO

De DBPROPSET_DATASOURCEINFO property set is aangepast om aan te geven dat het snapshot-isolatieniveau wordt ondersteund door de toevoeging van de DBPROPVAL_TI_SNAPSHOT waarde die in de DBPROP_SUPPORTEDTXNISOLEVELS property wordt gebruikt. Deze nieuwe waarde geeft aan dat het snapshot-isolatieniveau wordt ondersteund, ongeacht of versiebeheer in de database is ingeschakeld of niet. De volgende tabel geeft de DBPROP_SUPPORTEDTXNISOLEVELS waarden weer:

Eigenschaps-id Description
DBPROP_SUPPORTEDTXNISOLEVELS Type: VT_I4

R/W: Alleen-lezen

Beschrijving: Een bitmasker dat de ondersteunde transactieisolatieniveaus specificeert. Een combinatie van nul of meer van het volgende:

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

De set DBPROPSET_SESSION eigenschappen is gewijzigd om aan te geven dat het snapshot-isolatieniveau wordt ondersteund door de toevoeging van de DBPROPVAL_TI_SNAPSHOT waarde die in de DBPROP_SESS_AUTOCOMMITISOLEVELS-eigenschap wordt gebruikt. Deze nieuwe waarde geeft aan dat het snapshot-isolatieniveau wordt ondersteund, ongeacht of versiebeheer in de database is ingeschakeld of niet. De volgende tabel geeft de DBPROP_SESS_AUTOCOMMITISOLEVELS waarden weer:

Eigenschaps-id Description
DBPROP_SESS_AUTOCOMMITISOLEVELS Type: VT_I4

R/W: Alleen-lezen

Beschrijving: Specificeert een bitmask die het transactie-isolatieniveau aangeeft terwijl het in auto-commit-modus is. De waarden die in dit bitmasker kunnen worden ingesteld zijn dezelfde als de waarden die voor DBPROP_SUPPORTEDTXNISOLEVELS kunnen worden ingesteld.

Opmerking

De fouten DB_S_ERRORSOCCURRED of DB_E_ERRORSOCCURRED zullen optreden als DBPROPVAL_TI_SNAPSHOT is ingesteld bij gebruik van versies van SQL Server vóór SQL Server 2005 (9.x).

Voor informatie over hoe snapshot-isolatie wordt ondersteund in transacties, zie Ondersteuning van Lokale Transacties.

Zie ook

OLE DB-driver voor SQL Server-functies
Eigenschappen en gedrag van rijsets