Trabalhando com isolamento de instantâneo

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Baixar o driver do OLE DB

O SQL Server 2005 (9.x) introduziu um novo nível de isolamento de "instantâneo" cujo objeto é aumentar a simultaneidade para aplicativos OLTP (online transaction processing). Nas versões anteriores do SQL Server, a simultaneidade baseava-se apenas no bloqueio, o que pode causar problemas de bloqueio e de deadlock em alguns aplicativos. O isolamento de instantâneo depende de aprimoramentos no controle de versão de linha e seu objetivo é melhorar o desempenho evitando cenários de bloqueio de leitor/gravador.

As transações que iniciam com o isolamento de instantâneo leem um instantâneo de banco de dados a partir da hora em que a transação inicia. Os cursores de servidor de conjunto de chaves, dinâmicos e estáticos, abertos em um contexto de transação de instantâneo, comportam-se como os cursores estáticos que foram abertos em transações serializáveis. Porém, quando os cursores são abertos com o nível de isolamento de instantâneo os bloqueios não são considerados. Esse fato pode reduzir o bloqueio no servidor.

OLE DB Driver for SQL Server

O Driver do OLE DB para SQL Server tem aprimoramentos que aproveitam o isolamento de instantâneo introduzido no SQL Server 2005 (9.x). Esses aprimoramentos incluem alterações aos conjuntos de propriedades DBPROPSET_DATASOURCEINFO e DBPROPSET_SESSION.

DBPROPSET_DATASOURCEINFO

O conjunto de propriedades DBPROPSET_DATASOURCEINFO tem sido alterado para indicar que o nível de isolamento de instantâneo é suportado pela adição do valor DBPROPVAL_TI_SNAPSHOT usado na propriedade DBPROP_SUPPORTEDTXNISOLEVELS. Esse novo valor indica que haverá suporte para o nível de isolamento do instantâneo se o controle de versão tiver sido ou não habilitado no banco de dados. A seguinte tabela lista os valores de DBPROP_SUPPORTEDTXNISOLEVELS:

ID da propriedade DESCRIÇÃO
DBPROP_SUPPORTEDTXNISOLEVELS Tipo: VT_I4

R/W: somente leitura

Descrição: Um bitmask que especifica os níveis de isolamento da transação com suporte. Uma combinação de zeros ou mais do seguinte:

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

O conjunto de propriedades DBPROPSET_SESSION tem sido alterado para indicar que o nível de isolamento de instantâneo é suportado pela adição do valor DBPROPVAL_TI_SNAPSHOT usado na propriedade DBPROP_SESS_AUTOCOMMITISOLEVELS. Esse novo valor indica que haverá suporte para o nível de isolamento do instantâneo se o controle de versão tiver sido ou não habilitado no banco de dados. A seguinte tabela lista os valores de DBPROP_SESS_AUTOCOMMITISOLEVELS:

ID da propriedade DESCRIÇÃO
DBPROP_SESS_AUTOCOMMITISOLEVELS Tipo: VT_I4

R/W: somente leitura

Descrição: Especifica um bitmask que indica o nível de isolamento da transação enquanto estiver no modo de confirmação automática. Os valores que podem ser definidos nesse bitmask são os mesmos valores que podem ser definidos para DBPROP_SUPPORTEDTXNISOLEVELS.

Observação

Os erros DB_S_ERRORSOCCURRED ou DB_E_ERRORSOCCURRED ocorrerão se DBPROPVAL_TI_SNAPSHOT for definido durante o uso de versões do SQL Server anteriores a SQL Server 2005 (9.x).

Para obter informações sobre o suporte ao isolamento de instantâneo em transações, confira Suporte a transações locais.

Consulte Também

Recursos do Driver do OLE DB para SQL Server
Propriedades e comportamentos do conjunto de linhas