Udostępnij przez


Praca z izolacją migawki

Dotyczy do:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSystem Platform Analitycznych (PDW)Baza danych SQL w Microsoft Fabric

pobierz sterownik OLE DB

SQL Server 2005 (9.x) wprowadził nowy poziom izolacji "migawki", mający na celu zwiększenie współbieżności dla aplikacji przetwarzania transakcji online (OLTP). We wcześniejszych wersjach SQL Server współbieg opierał się wyłącznie na blokowaniu, co może powodować problemy z blokowaniem i martwym blokowaniem w niektórych aplikacjach. Izolacja migawek zależy od ulepszeń wersjonowania wierszy i ma na celu poprawę wydajności poprzez unikanie scenariuszy blokowania przez czytelnika-autora.

Transakcje rozpoczynające się w izolacji migawki odczytują migawkę bazy danych w momencie rozpoczęcia transakcji. Zestaw kluczy, dynamiczne i statyczne kursory serwera, otwarte w kontekście transakcji migawkowej, zachowują się podobnie jak statyczne kursory otwierane w ramach transakcji serializowalnych. Jednak gdy kursory są otwierane pod snapshotem, blokady poziomu izolacji nie są wykorzystywane. Ten fakt może zmniejszyć liczbę bloków na serwerze.

Sterownik OLE DB dla programu SQL Server

Sterownik OLE DB dla SQL Server zawiera ulepszenia wykorzystujące izolację migawek wprowadzoną w SQL Server 2005 (9.x). Te ulepszenia obejmują zmiany w zestawach DBPROPSET_DATASOURCEINFO i DBPROPSET_SESSION.

DBPROPSET_DATASOURCEINFO

Zbiór właściwości DBPROPSET_DATASOURCEINFO został zmieniony, aby wskazywać, że poziom izolacji migawki jest wspierany przez dodanie wartości DBPROPVAL_TI_SNAPSHOT używanej w DBPROP_SUPPORTEDTXNISOLEVELS właściwości. Ta nowa wartość oznacza, że poziom izolacji migawki jest obsługiwany niezależnie od tego, czy wersjonowanie zostało włączone w bazie danych. Poniższa tabela przedstawia wartości DBPROP_SUPPORTEDTXNISOLEVELS:

Identyfikator właściwości Description
DBPROP_SUPPORTEDTXNISOLEVELS Typ: VT_I4

R/W: Tylko do czytania

Opis: Bitmaska określająca obsługiwane poziomy izolacji transakcji. Kombinacja zero lub więcej z następujących elementów:

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

Zbiór właściwości DBPROPSET_SESSION został zmieniony, aby wskazywać, że poziom izolacji migawki jest wspierany przez dodanie wartości DBPROPVAL_TI_SNAPSHOT używanej w DBPROP_SESS_AUTOCOMMITISOLEVELS właściwości. Ta nowa wartość oznacza, że poziom izolacji migawki jest obsługiwany niezależnie od tego, czy wersjonowanie zostało włączone w bazie danych. Poniższa tabela przedstawia wartości DBPROP_SESS_AUTOCOMMITISOLEVELS:

Identyfikator właściwości Description
DBPROP_SESS_AUTOCOMMITISOLEVELS Typ: VT_I4

R/W: Tylko do czytania

Opis: Określa bitmaskę wskazującą poziom izolacji transakcji w trybie automatycznego zatwierdzania. Wartości, które można ustawić w tej masce bitowej, są takie same jak wartości, które można ustawić dla DBPROP_SUPPORTEDTXNISOLEVELS.

Uwaga / Notatka

Błędy DB_S_ERRORSOCCURRED lub DB_E_ERRORSOCCURRED wystąpią, jeśli DBPROPVAL_TI_SNAPSHOT jest ustawione przy użyciu wersji SQL Server starszych niż SQL Server 2005 (9.x).

Aby uzyskać informacje o tym, jak izolacja migawek jest wspierana w transakcjach, zobacz Wsparcie Transakcji Lokalnych.

Zobacz też

OLE DB Driver for SQL Server Features
Właściwości i zachowania wierszy