Compartilhar via


acesso aos metadados, níveis de isolamento e dicas de bloqueio

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 níveis de isolamento, consulte 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