Який тип очікування SQLCLR в Моніторі діяльності в студії управління SQL Server (SSMS)?


10

Коли я перевіряю наш сервер SQL Prod, кожного разу, коли я відкриваю Monitor Monitor, я завжди бачу SQLCLRв першому списку розділу очікування ресурсів у "Monitor Monitor". Це завжди велика кількість. Для чого SQLCLR? Чи погано для сервера, який SQLCLRмає велику кількість очікування ресурсів на моніторі активності?

Відповіді:


11

SQLCLR - це можливість запускати .NET-код у SQL Server.

Коли люди говорять про SQLCLR, вони зазвичай посилаються на можливість запису користувальницького коду .NET (Збережені процедури, функції, тригери, типи, визначені користувачем, та агрегати, визначені користувачем). У цьому випадку цю здатність можна вмикати та вимикати через серверну опцію "включеної clr" всередині sp_configure, і я вважаю, що вона називається "інтеграція CLR" в GUI з конфігурацією поверхні. Для додавання .NET функціональності потрібно використовувати CREATE ASSEMBLY для завантаження зібраного коду .NET у SQL Server.

Однак, навіть якщо параметр "увімкнено clr" встановлений на 0"вимкнено" / "відключено", функція CLR все ще використовується для внутрішньої функціональності та деяких вбудованих функцій і завжди буде там, якщо тільки "використовувати волокна Windows" / " полегшений пул "включено.

Щоб отримати дуже детальний опис того, що таке SQLCLR, ні, і що це може зробити, перегляньте статтю, яку я написав на цю тему на SQL Server Central: Сходи до SQLCLR Рівень 1: Що таке SQLCLR? (для перегляду вмісту на цьому веб-сайті потрібна безкоштовна реєстрація). Скинута версія цієї статті доступна у наступній відповіді StackOverflow: Коли нам потрібна функція CLR на SQL сервері? .

Якщо ви хочете дізнатися, чи дозволяє екземпляр додати користувальницький .NET-код до баз даних, виконайте наступне та перевірте поле "run_value":

EXEC sp_configure 'clr enabled';

Що стосується значення типу очікування SQLCLR в Моніторі ресурсів, будь ласка, дивіться наступне повідомлення в блозі:

Як це працює: Що стоїть за категорією очікування SQLCLR в Моніторі діяльності SQL Server 2008

і я вважаю, що відповідний рядок (оскільки він відноситься до категорії SQLCLR, яку ви дивитесь) з цієї посади:

Що я виявив, що кілька типів wait_ слід ігнорувати, оскільки від них очікують очікування.


Це SQL2008, і його, мабуть, планували виправити (на основі пов'язаної статті). ОП позначила SQL 2012. Я просто дивлюся на те саме, що і для мене. SQLCLR сидить стійко в 3000 мс + -1, і ми його не використовуємо.
Roger Willcocks

@RogerWillcocks Заплановане виправлення не завжди означає, що воно буде виправлено. Якщо ви прочитаєте коментарі до цього пов’язаного допису, ви побачите людей, які повідомляють, що це все ще проблема в SP1 та SP2 2012 року. Яку версію SSMS ви використовуєте? Виконайте наступне (наступний коментар), щоб побачити, чи відповідає воно тому, що ви бачите. Крім того, є кілька вбудованих функцій, які використовують SQLCLR, такі як типи геометрії, географії та ієрархії; команду FORMAT та деякі інші речі.
Соломон Руцький

2
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;
Соломон Руцький
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.