Che cos'è il tipo di attesa SQLCLR in Activity Monitor in SQL Server Management Studio (SSMS)?


10

Quando controllo il nostro server SQL Prod, ogni volta che apro Activity Monitor vedo sempre SQLCLRil primo elenco nella sezione di attesa delle risorse in Activity Monitor. Ha sempre un numero elevato. A cosa serve SQLCLR? È dannoso per il server avere questo SQLCLRcon un alto numero di attesa delle risorse nel monitor attività?

Risposte:


11

SQLCLR è la capacità di eseguire il codice .NET all'interno di SQL Server.

Quando le persone parlano di SQLCLR di solito si riferiscono alla capacità di scrivere codice .NET personalizzato (Stored procedure, funzioni, trigger, tipi definiti dall'utente e aggregati definiti dall'utente). In questo caso, questa capacità può essere attivata e disattivata tramite l'opzione server di "clr enabled" all'interno sp_configuree credo che sia chiamata "Integrazione CLR" nella GUI di configurazione di Surface Area. L'aggiunta della funzionalità .NET richiede l'utilizzo di CREATE ASSEMBLY per caricare il codice .NET compilato in SQL Server.

Tuttavia, anche con l'opzione "clr enabled" impostata su 0/ "off" / "disabled", la funzionalità CLR è ancora utilizzata per la funzionalità interna e alcune funzioni integrate e sarà sempre presente, a meno che "usa le fibre di Windows" / " l'opzione "pool leggero" è abilitata.

Per una descrizione molto dettagliata di cosa sia SQLCLR e cosa possa fare, vedere l'articolo che ho scritto su questo argomento in SQL Server Central: Stairway to SQLCLR Livello 1: Cos'è SQLCLR? (per visualizzare i contenuti su quel sito è necessaria la registrazione gratuita). Una versione ridotta di questo articolo è disponibile nella seguente risposta StackOverflow: quando è necessaria una funzione CLR in SQL Server? .

Se si desidera sapere se l'istanza consente o meno l' aggiunta di codice .NET personalizzato ai database, eseguire quanto segue e controllare il campo "run_value":

EXEC sp_configure 'clr enabled';

Per quanto riguarda il significato del tipo di attesa SQLCLR in Resource Monitor, consultare il seguente post di blog:

Come funziona: cosa c'è dietro la categoria di attesa SQLCLR in SQL Server 2008 Activity Monitor

e credo che la linea pertinente (per quanto riguarda la categoria SQLCLR che stai guardando) da quel post sia:

Quello che ho scoperto è che molti dei wait_types dovrebbero essere ignorati in quanto si aspettano attese.


Questo è SQL2008, ed era presumibilmente programmato per essere corretto (in base all'articolo collegato). L'OP ha segnalato SQL 2012. Sto solo osservando la stessa cosa per me SQLCLR è stabile a 3000ms + -1 e non lo stiamo usando.
Roger Willcocks,

@RogerWillcocks Pianificato per essere risolto non significa sempre che verrà risolto. Se leggi i commenti su quel post collegato, vedrai le persone che segnalano che si tratta ancora di un problema nel 2012 SP1 e SP2. Quale versione di SSMS stai usando? Esegui il seguente (prossimo commento) per vedere se corrisponde a quello che stai vedendo. Inoltre, ci sono diverse funzionalità integrate che usano SQLCLR, come i tipi Geometry, Geography e HierarchyID; il comando FORMAT e alcune altre cose.
Solomon Rutzky,

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;
Solomon Rutzky,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.