Compartir a través de


sys.dm_db_uncontained_entities (Transact-SQL)

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ía, la base de datos no usará entidades no contenidas.

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 columna

Tipo

Descripción

class

int

1 = Objeto o columna (incluye módulos, XP, vistas, sinónimos y tablas).

4 = Entidad de seguridad de 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. La clase coincidirá con uno de los elementos siguientes.

  • OBJECT_OR_COLUMN

  • DATABASE_PRINCIPAL

  • ASSEMBLY

  • TYPE

  • INDEX

  • DATABASE_DDL_TRIGGER

  • ROUTE

  • AUDIT_SPECIFICATION

major_id

int

Identificador de la entidad.

Si class = 1, entonces object_id

Si class = 4, entonces sys.database_principals.principal_id.

Si class = 5, entonces sys.assemblies.assembly_id.

Si class = 6, entonces sys.types.user_type_id.

Si class = 7, entonces sys.indexes.index_id.

Si class = 12, entonces sys.triggers.object_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.

feature_ name

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 podrían traspasar 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 aquellos objetos para los que el usuario tiene algún tipo de permiso. Para evaluar exhaustivamente la contención de la base de datos, esta función debe usarla un usuario con privilegios elevados, como un miembro del rol de servidor fijo sysadmin o del rol 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;

Vea también

Conceptos

Bases de datos independientes