web-dev-qa-db-ja.com

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;

wait types

関連する質問 SQL Server Management Studio(SSMS)内のアクティビティモニターのSQLCLR待機タイプは何ですか? 、SQL Server内で.NETマネージコードを実行すると表示されると読みました。

ただし、それを使用しているとは思いません。EXEC sp_configure 'clr enabled'を実行すると、次のようになります。

clr enabled

有効になっていないように見えます。誰かが何が起こっているのか説明できますか?

PS:SQL Server 2017 Developer Edition(14.0.3026.27)を実行しています。

1
Tom Pažourek

SQL Serverは、いくつかの機能に対して内部的にCLRを使用します。これらの待機は、ManualResetEventまたはAutoResetEventで待機しているCLRバックグラウンドスレッドを追跡します。 CLR_MANUAL_EVENTおよびCLR_AUTO_EVENTでの高い待機 によると、これらはバックグラウンド待機であり(つまり、ユーザーセッションで待機時間が発生していない)、これらのイベントを直接使用する安全でないCLRコードがない限り、無視しても問題ありません。