我的数据库服务器上运行了一些占用大量CPU的进程。当我查看有关该过程的详细信息时:
set transaction isolation level read committed
其他详情包括:
我最近没有看过活动监视器,但是当我从我的服务器管理员那里得到消息称CPU运行率接近100%时,SQL Server占据了大部分,我非常好奇。该命令来自不同的(Web)应用程序,但它们都没有实际使用该代码。有些是用Coldfusion编写的,有些是用.NET编写的。
此命令是否由SQL Server生成?
造成这种情况的原因是什么?
杀死这些进程是否安全?
答案 0 :(得分:1)
来自earlier question的答案仍然适用:
不,SQL不会运行 自己的陈述。那些 语句来自Web应用程序。 它们可能不是明确存在的 您的应用中的SqlCommand文本,但在那里 是数万行 来自各种frameworsk和的代码 你的代码和什么之间的ORM 实际上到达了SQL Server。一件微不足道的事 例子是bening SqlConnection.Open()发送一个 非常大的批量初始化 会话设置,以...结尾的批处理 设置事务隔离级别读取 致力于...
你是否可以杀死他们是不可能的,因为他们你的应用程序。
答案 1 :(得分:0)
您能否向我们提供更多信息?
该命令仅将事务的隔离级别设置为在事务启动之前提交的读取,而不是导致问题的原因。
我建议您尝试使用SQL事件探查器来确定原因。设置过滤器时要小心,以防它收到大量的交易。
答案 2 :(得分:0)
同意Remus Rusanu,但只是为了澄清您的确切问题:“设置事务隔离级别读取已提交”不是“过程”。这是一个声明,规定如何处理来自您的应用程序的语句。
这就是说查询作为会话的一部分运行(在ColdFusion的情况下,任何特定的cfquery,除非它们在cftransaction中)将只读取已提交的数据。你可能会注意到,如果你使用了cftransaction,你会看到一个不同的事务隔离级别,它允许查询读取本地未提交的数据。