Compartilhar via


sys.dm_db_uncontained_entities (Transact-SQL)

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. Uma das seguintes deve corresponder à classe.

  • OBJECT_OR_COLUMN

  • DATABASE_PRINCIPAL

  • ASSEMBLY

  • TYPE

  • INDEX

  • DATABASE_DDL_TRIGGER

  • ROUTE

  • AUDIT_SPECIFICATION

major_id

int

ID da entidade.

Se class = 1, object_id

Se class = 4, sys.database_principals.principal_id.

Se class = 5, sys.assemblies.assembly_id.

Se class = 6, sys.types.user_type_id.

Se class = 7, sys.indexes.index_id.

Se class = 12, sys.triggers.object_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_ name

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 essas entidades que podem, potencialmente, cruzar o limite de 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 completamente a contenção do banco de dados, essa função deve ser usada por um usuário com privilégios altos, 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;

Consulte também

Conceitos

Bancos de dados contidos