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;