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.
|
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;