sys.dm_db_uncontained_entities (Transact-SQL)

Aplica-se a: SQL Server

Mostra qualquer objeto não contido usado no banco de dados. Os objetos não contidos são aqueles que cruzam o limite de banco de dados em um banco de dados independente. Essa exibição pode ser acessada de um banco de dados independente e de um banco de dados dependente. Se sys.dm_db_uncontained_entities estiver vazio, seu banco de dados não usará nenhuma entidade não contida.

Se um módulo cruzar o limite de banco de dados mais de uma vez, apenas o primeiro cruzamento descoberto será relatado.

Nome da coluna Tipo Descrição
class int 1 = Objeto ou coluna (inclui módulos, XPs, exibições, sinônimos e tabelas).

4 = Entidade do Banco de Dados

5 = Assembly

6 = Tipo

7 = Índice (Índice de Texto Completo)

12 = Gatilho DDL do Banco de Dados

19 = Rota

30 = Especificação de Auditoria
class_desc nvarchar(120) Descrição da classe da entidade. Um dos seguintes para corresponder à classe:

OBJECT_OR_COLUMN

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

INDEX

DATABASE_DDL_TRIGGER

ROUTE

AUDIT_SPECIFICATION
major_id int ID da entidade.

Se classe = 1, então object_id

Se class = 4, então sys.database_principals.principal_id.

Se classe = 5, então sys.assemblies.assembly_id.

Se classe = 6, então sys.types.user_type_id.

Se classe = 7, então sys.indexes.index_id.

Se classe = 12, então sys.triggers.object_id.

Se classe = 19, então sys.routes.route_id.

Se classe = 30, então sys. database_audit_specifications.database_specification_id.
statement_line_number int Se a classe for um módulo, retornará o número da linha no qual o uso não contido está localizado. Caso contrário, o valor será nulo.
statement_ offset_begin int Se a classe for um módulo, indicará, em bytes, começando com 0, a posição inicial onde uso não contido começa. Caso contrário, o valor de retorno será nulo.
statement_ offset_end int Se a classe for um módulo, indicará, em bytes, começando com 0, a posição final do uso não contido. Um valor de -1 indica o fim do módulo. Caso contrário, o valor de retorno será nulo.
statement_type nvarchar(512) O tipo de instrução.
feature_ nome nvarchar(256) Retorna o nome externo do objeto.
feature_type_name nvarchar(256) Retorna o tipo de recurso.

Comentários

sys.dm_db_uncontained_entities mostra as entidades que podem potencialmente cruzar o limite do banco de dados. Retornará qualquer entidade de usuário que tenha o potencial para usar objetos fora do modelo de banco de dados.

Os tipos de recurso a seguir são relatados.

  • Comportamento de retenção desconhecido (SQL dinâmico ou resolução de nome adiada)

  • Comando DBCC

  • Procedimento armazenado do sistema

  • Função escalar do sistema

  • Função com valor de tabela do sistema

  • Função interna do sistema

Segurança

Permissões

sys.dm_db_uncontained_entities retorna apenas objetos para os quais o usuário tem algum tipo de permissão. Para avaliar totalmente a contenção do banco de dados, essa função deve ser usada por um usuário com altos privilégios, como um membro da função de servidor fixa sysadmin ou da função db_owner .

Exemplos

O exemplo a seguir cria um procedimento denominado P1 e consulta sys.dm_db_uncontained_entities. A consulta relata que P1 usa sys.endpoints , que está fora do banco de dados.

CREATE DATABASE Test;  
GO  
  
USE Test;  
GO  
CREATE PROC P1  
AS   
SELECT * FROM sys.endpoints ;  
GO  
SELECT SO.name, UE.* FROM sys.dm_db_uncontained_entities AS UE  
LEFT JOIN sys.objects AS SO  
    ON UE.major_id = SO.object_id;  

Confira também

Bancos de dados independentes