SQLCLR é a capacidade de executar o código .NET no SQL Server.
Quando as pessoas falam de SQLCLR, geralmente se referem à capacidade de escrever código .NET personalizado (procedimentos armazenados, funções, disparadores, tipos definidos pelo usuário e agregados definidos pelo usuário). Nesse caso, essa capacidade pode ser ativada e desativada através da opção do servidor "clr enabled" dentro sp_configure
, e acredito que seja chamada "Integração CLR" na GUI de configuração da área de superfície. Adicionar funcionalidade .NET requer o uso de CREATE ASSEMBLY para carregar o código .NET compilado no SQL Server.
No entanto, mesmo com a opção "clr enabled" configurada como 0
/ "off" / "disabled", a funcionalidade CLR ainda é usada para funcionalidade interna e algumas funções internas e sempre estará lá, a menos que a opção "use fibres do Windows" / " opção pool leve "está ativada.
Para obter uma descrição muito detalhada do que o SQLCLR é, não é e o que ele pode fazer, consulte o artigo que escrevi sobre este tópico no SQL Server Central: Stairway to SQLCLR Nível 1: O que é SQLCLR? (é necessário registro gratuito para visualizar o conteúdo desse site). Uma versão simplificada desse artigo está disponível na seguinte resposta StackOverflow: Quando precisamos de uma função CLR no SQL Server? .
Se você deseja saber se a instância está ou não permitindo que o código .NET personalizado seja adicionado aos bancos de dados, execute o seguinte e verifique o campo "run_value":
EXEC sp_configure 'clr enabled';
Com relação ao significado do tipo de espera SQLCLR no Monitor de Recursos, consulte a seguinte postagem no blog:
Como funciona: O que está por trás da categoria de espera SQLCLR no SQL Server 2008 Activity Monitor
e acredito que a linha pertinente (no que se refere à categoria SQLCLR que você está vendo) desse post é:
O que descobri foi que vários dos wait_types devem ser ignorados, pois são esperados.
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;