sys.dm_db_uncontained_entities (Transact-SQL)sys.dm_db_uncontained_entities (Transact-SQL)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Mostra qualquer objeto não contido usado no banco de dados.Shows any uncontained objects used in the database. Os objetos não contidos são aqueles que cruzam o limite de banco de dados em um banco de dados independente.Uncontained objects are objects that cross the database boundary in a contained database. Essa exibição pode ser acessada de um banco de dados independente e de um banco de dados dependente.This view is accessible from both a contained database and a non-contained database. Se db_uncontained_entities estiver vazio, seu banco de dados não usa nenhuma entidade não contida.If sys.dm_db_uncontained_entities is empty, your database does not use any uncontained entities.

Se um módulo cruzar o limite de banco de dados mais de uma vez, apenas o primeiro cruzamento descoberto será relatado.If a module crosses the database boundary more than once, only the first discovered crossing is reported.

Nome da colunaColumn name TipoType DescriçãoDescription
classclass intint 1 = Objeto ou coluna (inclui módulos, XPs, exibições, sinônimos e tabelas).1 = Object or column (includes modules, XPs, views, synonyms, and tables).

4 = Entidade do Banco de Dados4 = Database Principal

5 = Assembly5 = Assembly

6 = Tipo6 = Type

7 = Índice (Índice de Texto Completo)7 = Index (Full-text Index)

12 = Gatilho DDL do Banco de Dados12 = Database DDL Trigger

19 = Rota19 = Route

30 = Especificação de Auditoria30 = Audit Specification
class_descclass_desc nvarchar(120)nvarchar(120) Descrição da classe da entidade.Description of class of the entity. Uma das opções a seguir para corresponder à classe:One of the following to match the class:

OBJECT_OR_COLUMNOBJECT_OR_COLUMN

DATABASE_PRINCIPALDATABASE_PRINCIPAL

ASSEMBLYASSEMBLY

TYPETYPE

INDEXINDEX

DATABASE_DDL_TRIGGERDATABASE_DDL_TRIGGER

ROUTEROUTE

AUDIT_SPECIFICATIONAUDIT_SPECIFICATION
major_idmajor_id intint ID da entidade.ID of the entity.

Se classe = 1, então o object_idIf class = 1, then object_id

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

Se classe = 5 e, em seguida, assembly_id.If class = 5, then sys.assemblies.assembly_id.

Se classe = 6 e, em seguida, user_type_id.If class = 6, then sys.types.user_type_id.

Se classe = 7, em seguida, index_id.If class = 7, then sys.indexes.index_id.

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

Se classe = 19, route_id.If class = 19, then sys.routes.route_id.

Se classe = 30 e, em seguida, sys.If class = 30, then sys. database_audit_specifications.database_specification_id.database_audit_specifications.database_specification_id.
statement_line_numberstatement_line_number intint Se a classe for um módulo, retornará o número da linha no qual o uso não contido está localizado.If the class is a module, returns the line number on which the uncontained use is located. Caso contrário, o valor será nulo.Otherwise the value is null.
statement_ offset_beginstatement_ offset_begin intint 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.If the class is a module, indicates, in bytes, beginning with 0, the starting position where uncontained use begins. Caso contrário, o valor de retorno será nulo.Otherwise the return value is null.
statement_ offset_endstatement_ offset_end intint Se a classe for um módulo, indicará, em bytes, começando com 0, a posição final do uso não contido.If the class is a module, indicates, in bytes, starting with 0, the ending position of the uncontained use. Um valor de -1 indica o fim do módulo.A value of -1 indicates the end of the module. Caso contrário, o valor de retorno será nulo.Otherwise the return value is null.
statement_typestatement_type nvarchar(512)nvarchar(512) O tipo de instrução.The type of statement.
nome de feature_feature_ name nvarchar(256)nvarchar(256) Retorna o nome externo do objeto.Returns the external name of the object.
feature_type_namefeature_type_name nvarchar(256)nvarchar(256) Retorna o tipo de recurso.Returns the type of feature.

ComentáriosRemarks

db_uncontained_entities mostra essas entidades que podem, potencialmente, cruzar o limite de banco de dados.sys.dm_db_uncontained_entities shows those entities which can potentially cross the database boundary. Retornará qualquer entidade de usuário que tenha o potencial para usar objetos fora do modelo de banco de dados.It will return any user entities that have the potential to use objects outside of the database.

Os tipos de recurso a seguir são relatados.The following feature types are reported.

  • Comportamento de retenção desconhecido (SQL dinâmico ou resolução de nome adiada)Unknown containment behavior (dynamic SQL or deferred name resolution)

  • Comando DBCCDBCC command

  • Procedimento armazenado do sistemaSystem stored procedure

  • Função escalar do sistemaSystem scalar function

  • Função com valor de tabela do sistemaSystem table valued function

  • Função interna do sistemaSystem built-in function

SegurançaSecurity

PermissõesPermissions

db_uncontained_entities retorna apenas objetos para os quais o usuário tem algum tipo de permissão.sys.dm_db_uncontained_entities only returns objects for which the user has some type of permission. Para avaliar completamente a contenção do banco de dados, essa função deve ser usada por um usuário com altos privilégios, como um membro do sysadmin função de servidor fixa ou o db_owner função.To fully evaluate the containment of the database this function should be used by a high privileged user such as a member of the sysadmin fixed server role or the db_owner role.

ExemplosExamples

O exemplo a seguir cria um procedimento denominado P1 e consulta sys.dm_db_uncontained_entities.The following example creates a procedure named P1, and then queries sys.dm_db_uncontained_entities. A consulta relata que P1 usa sys.endpoints , que está fora do banco de dados.The query reports that P1 uses sys.endpoints which is outside of the database.

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émSee Also

Bancos de dados independentesContained Databases