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;