我能杀掉这个过程吗?

时间:2009-12-22 21:22:00

标签: .net sql-server sql-server-2005 coldfusion activity-monitor

  

可能重复:
  Activity Monitor Problems in SQL Server 2005

我的数据库服务器上运行了一些占用大量CPU的进程。当我查看有关该过程的详细信息时:

set transaction isolation level  read committed

其他详情包括:

  • 状态:睡觉
  • 打开交易:0
  • 命令:AWAITING COMMAND
  • 登录时间:12个小时以前
  • 最后一批:不到2分钟前

我最近没有看过活动监视器,但是当我从我的服务器管理员那里得到消息称CPU运行率接近100%时,SQL Server占据了大部分,我非常好奇。该命令来自不同的(Web)应用程序,但它们都没有实际使用该代码。有些是用Coldfusion编写的,有些是用.NET编写的。

此命令是否由SQL Server生成?

造成这种情况的原因是什么?

杀死这些进程是否安全?

3 个答案:

答案 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,你会看到一个不同的事务隔离级别,它允许查询读取本地未提交的数据。