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 |