sys.dm_db_uncontained_entities (Transact-SQL)
Область применения: SQL Server
Показывает все неавтономные объекты, которые используются в базе данных. Неавтономные объекты пересекают границу базы данных в автономной базе данных. Представление доступно как из автономной базы данных, так и из неавтономной базы данных. Если sys.dm_db_uncontained_entities пуст, база данных не использует несоотражаемые сущности.
Если модуль пересекает границу базы данных несколько раз, то в отчете указывается только первое пересечение границы.
Имя столбца | Тип | Description |
---|---|---|
class | int | 1 = объект или столбец (включая модули, XP, представления, синонимы и таблицы). 4 = Участник базы данных 5 = Сборка 6 = Тип 7 = Индекс (полнотекстовый индекс) 12 = Триггер DDL базы данных 19 = Маршрут 30 = Спецификация аудита |
class_desc | nvarchar(120) | Описание класса сущности. Одно из следующих элементов, чтобы соответствовать классу: OBJECT_OR_COLUMN DATABASE_PRINCIPAL ASSEMBLY TYPE INDEX DATABASE_DDL_TRIGGER ROUTE AUDIT_SPECIFICATION |
major_id | int | Идентификатор сущности. Если класс = 1, то object_id Если класс = 4, то sys.database_principals.principal_id. Если класс = 5, sys.assemblies.assembly_id. Если класс = 6, sys.types.user_type_id. Если класс = 7, sys.indexes.index_id. Если класс = 12, sys.triggers.object_id. Если класс = 19, sys.routes.route_id. Если класс = 30, то sys. database_audit_specifications.database_specification_id. |
statement_line_number | int | Если класс является модулем, возвращает номер строки, в которой используется неавтономная инструкция. В противном случае — значение NULL. |
statement_ offset_begin | int | Если класс является модулем, он указывает (в байтах, начиная с 0) положение, откуда начинается неавтономная инструкция. В противном случае возвращается значение null. |
statement_ offset_end | int | Если класс является модулем, он указывает (в байтах, начиная с 0) положение, где заканчивается неавтономная инструкция. Значение -1 обозначает конец модуля. В противном случае возвращается значение null. |
statement_type | nvarchar(512) | Тип инструкции. |
имя feature_ | nvarchar(256) | Возвращает внешнее имя объекта. |
feature_type_name | nvarchar(256) | Возвращает тип функции. |
Замечания
sys.dm_db_uncontained_entities показаны те сущности, которые потенциально могут пересекать границу базы данных. Будут возвращены все сущности пользователей, которые могут использовать объекты за пределами базы данных.
В отчете указываются следующие типы функций.
Неизвестный режим включения (динамическое SQL или отложенное разрешение имени)
Команда DBCC
Системная хранимая процедура
Системная скалярная функция
Системная функция, возвращающая табличное значение
Встроенная системная функция
Безопасность
Разрешения
sys.dm_db_uncontained_entities возвращает только объекты, для которых у пользователя есть некоторые типы разрешений. Чтобы полностью оценить содержание базы данных, которую эта функция должна использоваться пользователем с высоким уровнем привилегий, например членом предопределенных ролей сервера sysadmin или ролью db_owner .
Примеры
В следующем примере создается процедура с именем P1, а затем отправляется запрос sys.dm_db_uncontained_entities
. В отчете запроса указывается использование процедурой P1 представления sys.endpoints , находящегося за пределами базы данных.
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;