共用方式為


sys.dm_db_uncontained_entities (Transact-SQL)

 

顯示資料庫中使用的任何未自主物件。未自主物件為跨越自主資料庫中之資料庫界限的物件。這個檢視可從自主資料庫以及非自主資料庫存取。如果 sys.dm_db_uncontained_entities 為空白,您的資料庫並不會使用任何未自主實體。

如果模組多次跨越資料庫界限,只會回報其第一次已發現的跨越。

適用於:SQL Server (SQL Server 2012 至目前版本)。

資料行名稱

類型

描述

class

int

1 = 物件或資料行 (包含模組、XPs、檢視、同義字及資料表)。

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

實體的識別碼。

如果 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.databse_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_ name

nvarchar(256)

傳回物件的外部名稱。

feature_type_name

nvarchar(256)

傳回功能類型。

備註

sys.dm_db_uncontained_entities 會顯示可能可以跨資料庫界限的實體。它將傳回可能使用資料庫外之物件的任何使用者實體。

下列功能類型將會回報。

  • 未知的內含項目行為 (動態 SQL 或延遲的名稱解析)

  • DBCC (命令)

  • 系統預存程序

  • 系統純量函數

  • 系統資料表值函式

  • 內建系統函數

安全性

Permissions

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;

請參閱

自主資料庫