当我检查我们的SQL Prod服务器时,每次打开活动监视器时,总是SQLCLR
在活动监视器的资源等待部分的第一个列表上看到。它总是有很高的数量。是SQLCLR
为了什么?对于SQLCLR
活动监视器中具有高资源等待数的服务器,这是否不好?
当我检查我们的SQL Prod服务器时,每次打开活动监视器时,总是SQLCLR
在活动监视器的资源等待部分的第一个列表上看到。它总是有很高的数量。是SQLCLR
为了什么?对于SQLCLR
活动监视器中具有高资源等待数的服务器,这是否不好?
Answers:
SQLCLR是在SQL Server中运行.NET代码的功能。
人们谈论SQLCLR时通常指的是编写自定义.NET代码(存储过程,函数,触发器,用户定义的类型和用户定义的聚合)的功能。在这种情况下,可以通过中的“ clr enabled”服务器选项来打开和关闭此功能sp_configure
,并且我相信它在外围应用配置GUI中称为“ CLR集成”。添加.NET功能需要使用CREATE ASSEMBLY将已编译的.NET代码加载到SQL Server中。
但是,即使将“ clr enabled”选项设置为0
/“ off” /“ disabled”,CLR功能仍然用于内部功能和某些内置功能,除非“使用Windows光纤” /“轻量级池”选项已启用。
有关什么是SQLCLR,什么不是SQLCLR以及它可以做什么的非常详细的描述,请参见我在SQL Server Central:SQLCLR级别1的阶梯上写的关于此主题的文章:什么是SQLCLR?(需要免费注册才能查看该网站上的内容)。以下StackOverflow答案中提供了该文章的精简版本:什么时候在SQL Server中需要CLR函数?。
如果您想知道实例是否允许将自定义 .NET代码添加到数据库中,请运行以下命令并检查“ run_value”字段:
EXEC sp_configure 'clr enabled';
关于资源监视器中SQLCLR等待类型的含义,请参见以下博客文章:
工作原理:SQL Server 2008活动监视器中的SQLCLR等待类别背后是什么
而且我认为该帖子的相关内容(与您正在查看的SQLCLR类别有关)是:
我发现的是,应该等待中的几个wait_types应该被忽略。
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;