Sql-Server
當我什至不使用 SQL CLR 時,為什麼我的 SQL Server 報告 CLR_AUTO_EVENT 等待?
當我執行此查詢時,我看到等待時間很長
CLR_AUTO_EVENT
:SELECT * FROM sys.dm_os_wait_stats WHERE wait_type IN ( 'CLR_AUTO_EVENT', 'CLR_CRST', 'CLR_JOIN', 'CLR_MANUAL_EVENT', 'CLR_MEMORY_SPY', 'CLR_MONITOR', 'CLR_RWLOCK_READER', 'CLR_RWLOCK_WRITER', 'CLR_SEMAPHORE', 'CLR_TASK_START', 'CLRHOST_STATE_ACCESS', 'ASSEMBLY_LOAD', 'FS_GARBAGE_COLLECTOR_SHUTDOWN', 'SQLCLR_APPDOMAIN', 'SQLCLR_ASSEMBLY', 'SQLCLR_DEADLOCK_DETECTION', 'SQLCLR_QUANTUM_PUNISHMENT' ) ORDER BY wait_time_ms DESC, wait_type ASC;
在一個相關問題中,SQL Server Management Studio (SSMS) 中活動監視器中的 SQLCLR 等待類型是什麼?,我讀到它在 SQL Server 中執行 .NET 託管程式碼時出現。
但是,**我不認為我正在使用任何一個。**當我執行
EXEC sp_configure 'clr enabled'
時,我看到:在我看來,它甚至沒有啟用。有人可以解釋發生了什麼嗎?
PS:我正在執行 SQL Server 2017 Developer Edition (14.0.3026.27)。
SQL Server 在內部將 CLR 用於幾個功能,這些等待跟踪 CLR 後台執行緒,它們只是在等待 ManualResetEvent 或 AutoResetEvent。根據CLR_MANUAL_EVENT 和 CLR_AUTO_EVENT 的高等待,這些是後台等待(即使用者會話不會發生等待時間),除非您有不安全的 CLR 程式碼直接使用這些事件,否則可以安全地忽略它們。