Partilhar via


Trabalhando com Isoamento por Snapshots

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

Baixar driver OLE DB

O SQL Server 2005 (9.x) introduziu um novo nível de isolamento "snapshot" destinado a melhorar a concorrência para aplicações de processamento de transações online (OLTP). Nas versões anteriores do SQL Server, a concorrência baseava-se exclusivamente no bloqueio, o que pode causar problemas de bloqueio e deadlocks em algumas aplicações. O isolamento de instantâneos depende de melhorias na versão de linhas e destina-se a melhorar o desempenho evitando cenários de bloqueio leitor-escritor.

As transações que começam sob isolamento de snapshots leem um snapshot da base de dados no momento em que a transação começa. Keyset, cursores de servidor dinâmicos e estáticos, abertos num contexto de transação instantânea, comportam-se de forma semelhante a cursores estáticos que eram abertos em transações serializáveis. No entanto, quando os cursores são abertos sob o snapshot, os bloqueios de nível de isolamento não são tomados. Este facto pode reduzir o bloqueio no servidor.

Driver OLE DB para SQL Server

O Driver OLE DB para SQL Server tem melhorias que aproveitam o isolamento de snapshots introduzido no SQL Server 2005 (9.x). Estas melhorias incluem alterações aos conjuntos de propriedades DBPROPSET_DATASOURCEINFO e DBPROPSET_SESSION.

DBPROPSET_DATASOURCEINFO

O conjunto de propriedades DBPROPSET_DATASOURCEINFO foi alterado para indicar que o nível de isolamento do instantâneo é suportado pela adição do valor DBPROPVAL_TI_SNAPSHOT usado na propriedade DBPROP_SUPPORTEDTXNISOLEVELS. Este novo valor indica que o nível de isolamento de instantâneos é suportado, independentemente de a versão ter sido ativada na base de dados ou não. A tabela seguinte lista os valores DBPROP_SUPPORTEDTXNISOLEVELS:

ID da Propriedade Description
DBPROP_SUPPORTEDTXNISOLEVELS Tipo: VT_I4

R/W: Só leitura

Descrição: Uma máscara de bits que especifica os níveis de isolamento de transações suportados. Uma combinação de zero ou mais dos seguintes:

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 foi alterado para indicar que o nível de isolamento do instantâneo é suportado pela adição do valor DBPROPVAL_TI_SNAPSHOT usado na propriedade DBPROP_SESS_AUTOCOMMITISOLEVELS. Este novo valor indica que o nível de isolamento de instantâneos é suportado, independentemente de a versão ter sido ativada na base de dados ou não. A tabela seguinte lista os valores de DBPROP_SESS_AUTOCOMMITISOLEVELS:

ID da Propriedade Description
DBPROP_SESS_AUTOCOMMITISOLEVELS Tipo: VT_I4

R/W: Só leitura

Descrição: Especifica uma máscara de bits que indica o nível de isolamento da transação enquanto está em modo de auto-commit. Os valores que podem ser definidos nesta máscara de bits são os mesmos 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 ao usar versões do SQL Server anteriores ao SQL Server 2005 (9.x).

Para informações sobre como o isolamento de snapshots é suportado em transações, consulte Suporte a Transações Locais.

Ver também

Driver OLE DB para Funcionalidades do SQL Server
Propriedades e Comportamentos do Conjunto de Linhas