sys.dm_clr_properties (Transact-SQL)
針對與 SQL Server Common Language Runtime (CLR) 整合 (包括主控 CLR 的版本和狀態) 相關的每個屬性各傳回一個資料列。您可以執行 CREATE ASSEMBLY、ALTER ASSEMBLY 或 DROP ASSEMBLY 陳述式或者任何 CLR 常式、類型或觸發程序,以初始化主控 CLR。sys.dm_clr_properties 檢視不會指出是否已在伺服器上啟用使用者 CLR 程式碼的執行。可以使用 sp_configure 預存程序且將 clr enabled 選項設定為 1,以啟用使用者 CLR 程式碼的執行。
sys.dm_clr_properties 檢視包含 name 和 value 資料行。這個檢視的每個資料列提供了有關主控 CLR 屬性的詳細資料。請使用此檢視來收集有關主控 CLR 的資訊,例如 CLR 安裝目錄、CLR 版本,以及主控 CLR 目前的狀態。此檢視可以幫助您判斷 CLR 整合程式碼是否因為伺服器電腦的 CLR 安裝發生問題而無法運作。
資料行名稱 |
資料類型 |
描述 |
---|---|---|
name |
nvarchar(128) |
屬性的名稱。 |
value |
nvarchar(128) |
屬性的值。 |
屬性
directory 屬性指出伺服器上安裝 .NET Framework 的目錄。伺服器電腦上可能有多個 .NET Framework 安裝,而這個值可以指出 SQL Server 正在使用哪一個安裝。
version 屬性指出伺服器上的 .NET Framework 版本和主控 CLR。
sys.dm_clr_properties 動態管理檢視可以傳回六個不同的 state 屬性值,分別反映出 SQL Server 主控 CLR 的狀態。其中包括:
未載入 Mscoree。
已載入 Mscoree。
已利用 Mscoree 鎖定 CLR 版本。
已初始化 CLR。
CLR 初始化已永久失敗。
CLR 已停止。
「Mscoree is not loaded」和「Mscoree is loaded」狀態顯示伺服器啟動時主控 CLR 初始化的進程,較不可能出現。
在主控 CLR 未使用且因此而尚未初始化時,可能會顯示「Locked CLR version with mscoree」狀態。主控 CLR 會在第一次執行 DDL 陳述式 (例如 CREATE ASSEMBLY (Transact-SQL)) 或 Managed 資料庫物件時進行初始化。
「CLR is initialized」狀態指出已成功初始化主控 CLR。請注意,這並不會指出是否已啟用使用者 CLR 程式碼執行。如果是利用 Transact-SQLsp_configure 預存程序,先啟用使用者 CLR 程式碼,然後再加以停用,則狀態值仍會是「CLR is initialized」。
「CLR initialization permanently failed」狀態指出主控 CLR 初始化失敗。記憶體不足是可能的原因之一,或者也可能是因為 SQL Server 和 CLR 之間主控交握失敗所致。在這種情況下會發生錯誤訊息 6512 或 6513。
只有在 SQL Server 正在進行關閉程序時,才會看到「CLR is stopped state」。
備註
這個檢視的屬性和值在未來的 SQL Server 版本可能會隨著 CLR 整合功能的增強而變更。
權限
需要伺服器的 VIEW SERVER STATE 權限。
範例
下列範例會擷取有關主控 CLR 的資訊:
select name, value
from sys.dm_clr_properties