SQL Server Management Studio(SSMS)中的活动监视器中的SQLCLR等待类型是什么?


Answers:


11

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应该被忽略。


那是SQL2008,据推测已计划进行更正(基于链接的文章)。OP已将SQL 2012标记为标志。我只是在寻找与我相同的东西SQLCLR稳定地保持在3000ms + -1处,并且我们不使用它。
罗杰·威尔考克斯

@RogerWillcocks预定要修复的并不总是意味着它会被修复。如果您仔细阅读了链接文章上的评论,您会看到有人报告说这在2012 SP1和SP2中仍然是一个问题。您正在使用哪个版本的SSMS?运行以下内容(下一条注释)以查看其是否与您所看到的相符。另外,还有一些确实使用SQLCLR的内置功能,例如Geometry,Geography和HierarchyID类型。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;
所罗门·鲁茨基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.