sys.dm_clr_loaded_assemblies (Transact-SQL)
針對已載入至伺服器位址空間的每一個 Managed 使用者組件,各傳回一個資料列。請使用此檢視來了解在 MicrosoftSQL Server 中執行的 CLR 整合 Managed 資料庫物件,並對其進行疑難排解。
組件是用來在 SQL Server 中定義及部署 Managed 資料庫物件的 Managed 程式碼 DLL 檔案。每當使用者執行其中一個 Managed 資料庫物件時,SQL Server 和 CLR 都會載入包含 Managed 資料庫物件定義的組件 (及其參考)。為了提升效能,組件在 SQL Server 中會保持載入的狀態,使您日後不需要重新載入組件,就可以直接呼叫包含在組件中的 Managed 資料庫物件。在 SQL Server 承受記憶體不足的壓力之前,組件都不會卸載。如需有關組件和 CLR 整合的詳細資訊,請參閱<CLR 主控環境>。如需有關 Managed 資料庫物件的詳細資訊,請參閱<利用 Common Language Runtime (CLR) 整合建立資料庫物件>。
資料行名稱 |
資料類型 |
描述 |
---|---|---|
assembly_id |
int |
載入組件的識別碼。assembly_id 可以用來查詢 sys.assemblies (Transact-SQL) 目錄檢視中組件的相關詳細資訊。請注意,Transact-SQLsys.assemblies 目錄只會顯示目前資料庫中的組件。sqs.dm_clr_loaded_assemblies 檢視則會顯示伺服器上已載入的所有組件。 |
appdomain_address |
int |
載入組件的應用程式網域 (AppDomain) 位址。單一使用者擁有的所有組件永遠都會載入相同的 AppDomain 中。appdomain_address 可以用來查閱 sys.dm_clr_appdomains 檢視中 AppDomain 的相關詳細資訊。 |
load_time |
datetime |
載入組件的時間。請注意,在 SQL Server 承受記憶體不足的壓力而卸載 AppDomain 之前,組件都會維持載入狀態。您可以監視 load_time,以了解 SQL Server 因為承受記憶體不足的壓力而卸載 AppDomain 的頻率有多高。 |
權限
需要伺服器的 VIEW SERVER STATE 權限。
備註
dm_clr_loaded_assemblies.appdomain_address 檢視與 dm_clr_appdomains.appdomain_address 具有多對一的關聯性。dm_clr_loaded_assemblies.assembly_id 檢視與 sys.assemblies.assembly_id 具有一對多的關聯性。
範例
下列範例顯示如何檢視目前已載入現用資料庫中所有組件的詳細資料。
select a.name, a.assembly_id, a.permission_set_desc, a.is_visible, a.create_date, l.load_time
from sys.dm_clr_loaded_assemblies as l
inner join sys.assemblies as a
on l.assembly_id = a.assembly_id
下列範例顯示如何檢視已載入給定組件之 AppDomain 的詳細資料。
select appdomain_id, creation_time, db_id, user_id, state
from sys.dm_clr_appdomains a
where appdomain_address =
(select appdomain_address
from sys.dm_clr_loaded_assemblies
where assembly_id = 555)