Sql-Server

當我什至不使用 SQL CLR 時,為什麼我的 SQL Server 報告 CLR_AUTO_EVENT 等待?

  • June 1, 2018

當我執行此查詢時,我看到等待時間很長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'時,我看到:

啟用 clr

在我看來,它甚至沒有啟用。有人可以解釋發生了什麼嗎?

PS:我正在執行 SQL Server 2017 Developer Edition (14.0.3026.27)。

SQL Server 在內部將 CLR 用於幾個功能,這些等待跟踪 CLR 後台執行緒,它們只是在等待 ManualResetEvent 或 AutoResetEvent。根據CLR_MANUAL_EVENT 和 CLR_AUTO_EVENT 的高等待,這些是後台等待(即使用者會話不會發生等待時間),除非您有不安全的 CLR 程式碼直接使用這些事件,否則可以安全地忽略它們。

引用自:https://dba.stackexchange.com/questions/208503