sys.dm_db_uncontained_entities (Transact-SQL)
適用於:SQL Server
顯示資料庫中使用的任何未受控制的物件。 未受控制的物件是跨越自主資料庫中資料庫界限的物件。 此檢視可從自主資料庫和非自主數據庫存取。 如果sys.dm_db_uncontained_entities是空的,您的資料庫不會使用任何未受控制的實體。
如果模組多次越過資料庫界限,則只會報告第一個探索到的交叉。
數據行名稱 | 型別 | 說明 |
---|---|---|
class | int | 1 = 物件或數據行(包括模組、XP、檢視表、同義字和數據表)。 4 = 資料庫主體 5 = 元件 6 = 類型 7 = 索引 (全文檢索索引) 12 = 資料庫 DDL 觸發程式 19 = 路由 30 = 稽核規格 |
class_desc | nvarchar(120) | 實體類別的描述。 符合類別的下列其中一項: OBJECT_OR_COLUMN DATABASE_PRINCIPAL 集會 類型 INDEX DATABASE_DDL_TRIGGER 路線 AUDIT_SPECIFICATION |
major_id | int | 實體的標識碼。 如果 class = 1,則object_id 如果 class = 4,則sys.database_principals.principal_id。 如果 class = 5,則sys.assemblies.assembly_id。 如果 class = 6,則sys.types.user_type_id。 如果 class = 7,則sys.indexes.index_id。 如果 class = 12,則sys.triggers.object_id。 如果 class = 19,則sys.routes.route_id。 如果 class = 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只會傳回使用者具有某種許可權類型的物件。 若要完整評估資料庫的內含專案,此函式應該由高許可權使用者使用,例如系統管理員固定伺服器角色的成員或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;