Compartilhar via


Bloqueio e controle de versão de linha

O Mecanismo de banco de dados do SQL Server usa os seguintes mecanismos para garantir a integridade de transações e manter a consistência dos bancos de dados quando vários usuários estão acessando os dados ao mesmo tempo:

  • Bloqueio

    Cada transação solicita bloqueios de tipos diferentes nos recursos, como linhas, páginas ou tabelas, dos quais depende a transação. Os bloqueios não permitem que outras transações modifiquem os recursos de uma maneira que causaria problemas para a transação que solicita o bloqueio. Cada transação libera seus bloqueios quando não depende mais dos recursos bloqueados.

  • Controle de versão de linha

    Quando um nível de isolamento baseado em controle de versão de linha é habilitado, o Mecanismo de Banco de Dados mantém versões de cada linha modificada. Os aplicativos podem especificar que uma transação use as versões da linha para exibir dados da forma como eram no início da transação ou consulta ao invés de proteger todas as leituras com bloqueios. Usando o controle de versão de linha, a possibilidade de uma operação de leitura bloquear outras transações é muito reduzida.

O bloqueio e o controle de versão de linha impedem que os usuários leiam dados não confirmados e impedem que vários usuários tentem alterar os mesmos dados ao mesmo tempo. Sem o bloqueio ou o controle de versão de linha, as consultas executadas em relação a esses dados podem produzir resultados inesperados retornando dados que ainda não foram confirmados no banco de dados.

Os aplicativos podem escolher níveis de isolamento da transação que definem o nível de proteção da transação contra efeitos de modificações feitas por outras transações. Podem ser especificadas dicas em nível de tabela para instruções Transact-SQL individuais para personalizar ainda mais o comportamento para atender aos requisitos do aplicativo.

Os usuários podem controlar a implementação do controle de versão de linha habilitando ou desabilitando as opções do banco de dados. Para obter mais informações, consulte Habilitando níveis de isolamento baseados em controle de versão de linha e Usando níveis de isolamento com base em controle de versão de linha.