Compartir vía


sys.dm_db_uncontained_entities (Transact-SQL)

Se aplica a: SQL Server

Muestra los objetos no contenidos que se usan en la base de datos. Los objetos no contenidos son objetos que traspasan el límite de la base de datos en una base de datos independiente. A esta vista se puede acceder tanto desde una base de datos independiente como desde una dependiente. Si sys.dm_db_uncontained_entities está vacío, la base de datos no usa ninguna entidad no detenida.

Si un módulo traspasa el límite de la base de datos más de una vez, solo se notifica la primera incidencia detectada.

Nombre de la columna Tipo Descripción
class int 1 = Objeto o columna (incluye módulos, XP, vistas, sinónimos y tablas).

4 = Entidad de seguridad de la base de datos

5 = Ensamblado

6 = Tipo

7 = Índice (índice de texto completo)

12 = Desencadenador DDL de base de datos

19 = Ruta

30 = Especificación de auditoría
class_desc nvarchar(120) Descripción de la clase de la entidad. Uno de los siguientes elementos para que coincidan con la clase :

OBJECT_OR_COLUMN

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

INDEX

DATABASE_DDL_TRIGGER

ROUTE

AUDIT_SPECIFICATION
major_id int Identificador de la entidad.

Si la clase = 1, object_id

Si la clase = 4, sys.database_principals.principal_id.

Si la clase = 5, sys.assemblies.assembly_id.

Si la clase = 6, sys.types.user_type_id.

Si la clase = 7, sys.indexes.index_id.

Si la clase = 12, sys.triggers.object_id.

Si la clase = 19, sys.routes.route_id.

Si la clase = 30, sys. database_audit_specifications.database_specification_id.
statement_line_number int Si la clase es un módulo, devuelve el número de línea en el que se encuentra el uso del objeto no contenido. De lo contrario, el valor es NULL.
statement_ offset_begin int Si la clase es un módulo, indica en bytes, comenzando por 0, la posición inicial donde comienza el uso del objeto no contenido. De lo contrario el valor devuelto es NULL.
statement_ offset_end int Si la clase es un módulo, indica en bytes, comenzando por 0, la posición final del uso del objeto no contenido. El valor -1 indica el final del módulo. De lo contrario el valor devuelto es NULL.
statement_type nvarchar(512) El tipo de instrucción.
nombre de feature_ nvarchar(256) Devuelve el nombre externo del objeto.
feature_type_name nvarchar(256) Devuelve el tipo de característica.

Comentarios

sys.dm_db_uncontained_entities muestra las entidades que pueden cruzar el límite de la base de datos. Devolverá cualquier entidad del usuario que tenga potencial para usar los objetos fuera de la base de datos.

Se notifican los siguientes tipos de características.

  • Comportamiento de la contención desconocido (resolución diferida de nombres o SQL dinámico)

  • comando DBCC

  • Procedimiento almacenado del sistema

  • Función escalar del sistema

  • Función con valores de tabla del sistema

  • Función integrada del sistema

Seguridad

Permisos

sys.dm_db_uncontained_entities solo devuelve objetos para los que el usuario tiene algún tipo de permiso. Para evaluar completamente la contención de la base de datos, este usuario con privilegios elevados debe usar esta función, como un miembro del rol fijo de servidor sysadmin o el rol de db_owner .

Ejemplos

En el ejemplo siguiente se crea un procedimiento denominado P1 y, a continuación, se consulta sys.dm_db_uncontained_entities. La consulta notifica que P1 usa sys.endpoints , que está fuera de la base de datos.

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 también

Bases de datos independientes