Níveis de isolamento da transação

Aplica-se a: SQL Server (todas as versões com suporte) Instância Gerenciada de SQL do Azure

O SQL Server não garante que as dicas de bloqueio serão cumpridas em consultas que acessam metadados por exibições do catálogo, exibições de compatibilidade, exibições de esquema de informações, funções internas que emitem metadados.

Internamente, o Mecanismo de Banco de Dados do SQL Server cumpre apenas o nível de isolamento READ COMMITTED para acesso a metadados. Se uma transação tiver um nível de isolamento que seja, por exemplo, SERIALIZABLE e, dentro da transação, for feita uma tentativa de acessar os metadados usando exibições do catálogo ou funções internas que emitem metadados, essas consultas serão executadas até serem concluídas como READ COMMITTED. Porém, no isolamento de instantâneo, o acesso aos metadados pode falhar por causa de operações de DDL simultâneas. Isso porque os metadados não são controlados por versão. Portanto, pode haver falha ao acessar o seguinte no isolamento de instantâneo:

  • Exibições do catálogo

  • Exibições de compatibilidade

  • Exibições do esquema de informações

  • Funções internas que emitem metadados

  • Grupo sp_help de procedimentos armazenados

  • Procedimentos de catálogo do SQL Server Native Client

  • Exibições e funções de gerenciamento dinâmico

Para obter mais informações sobre os níveis de isolamento, confira SET TRANSACTION ISOLATION LEVEL (Transact-SQL).

A tabela a seguir fornece um resumo do acesso aos metadados em vários níveis de isolamento.

Nível de isolamento Com suporte Cumprido
READ UNCOMMITTED Não Não garantido
READ COMMITTED Sim Sim
REPEATABLE READ Não Não
SNAPSHOT ISOLATION Não Não
SERIALIZABLE Não Não