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.

Aplica-se a: SQL Server (SQL Server 2012 até a versão atual).

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.

Se class = 19, sys.routes.route_id.

Se class = 30, sys.database_audit_specifications.databse_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_ 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

Bancos de dados contidos