查询超时,直到重置SQL Server

时间:2014-01-29 14:50:08

标签: sql-server sql-server-2008-r2

重现步骤(SQL Server 2008R2):

  • 我们恢复.bak文件
  • 我们运行查询(没有其他活动)
  • 它超时
  • 我们重新启动sql server
  • 我们运行查询
  • 它运行得非常快。

繁殖率100%。

我尝试了

的组合
  DBCC FREEPROCCACHE
  DBCC DROPCLEANBUFFERS 
  DBCC FREESESSIONCACHE 
  DBCC FREESYSTEMCACHE ('ALL')
  DBCC UPDATEUSAGE (dbname)
  EXEC sp_updatestats  
  select * from master..sysprocesses where blocked <> 0

没有任何作用,只能重新启动SQL Server。

我认为这只是一个糟糕的计划,但预计FREEPROCCACHE可以修复它,而无需重新启动SQL Server。我需要清除一些其他缓存吗?

查询不是事务性/阻塞/锁定样式,主要选择进出它创建的临时表,而不是服务器上的其他活动。

我认为这一定是一个糟糕的计划,但DBCC FREEPROCCACHE没有完成这项工作。

有没有人有线索?

1 个答案:

答案 0 :(得分:0)

在我看来,你有一个与数据库的开放式连接,你可能会“站起来”。当您还原数据库时,您需要独占访问权限,以便删除数据库中的任何人并回滚正在进行的任何事务(您还原将会输入任何有害的东西)。然后,您可以还原您的数据库。

现在重新启动SQL服务器将关闭所有活动连接,但有一种更简单的方法; - )

USE MASTER; GO;

ALTER DATABASE [YourDbName] - &gt;将其更改为您的数据库名称

使用ROLLBACK IMMEDIATE设置SINGLE_USER;

之后,您可以运行恢复。

度过愉快的一天

沃尔特