长时间运行的查询正在SQL Server 2005数据库上运行,该数据库引用了SQL Server 2000数据库上的表。 SQL Server的两个实例都在同一台机器上运行。 这只是一个select查询,它没有改变任何logging。 它已经跑了大约2个小时才被杀死。 该进程已经处于“KILLED / ROLLBACK”状态超过6个小时。
进程的CPU时间不断增加(12827264截至此消息),而磁盘IO保持低和恒定(8)。
我们可以重新启动服务器,这可能会解决这个问题,但我很想知道这是什么原因。 究竟是什么回滚? 这是什么使用了这么多的CPU? 为什么要这么长时间?
一种可能性:SQL Server 2005创build了一个临时表来caching2000年远程查询的结果,而远程查询实际上是返回大量的数据。 所以回滚可能是SQL Server 2005清理本地tempdb。 一个公平的指标会看到tempdb的事务日志文件已经增长到了意想不到的比例。
SQL Server不擅长处理链接服务器调用(使用OLEDB / COM)之类的进程外事情。 xp_cmdshell也可能是一个问题。 我看到了ADSI的电话冻结,永远不会回来。 尝试closures应用程序或回收IIS应用程序,而不是试图从后端杀死它。