我试图在我的开发数据库上执行一些离线维护(从实时备份恢复开发数据库),但是通过SQL Server Management Studio执行的“脱机”命令执行得非常慢——大约30分钟以上。我只是在我的智慧的尽头,我似乎找不到任何参考网上可能导致速度问题,或如何解决它。
一些站点建议,打开到数据库的连接会导致这种放缓,但使用此数据库的唯一应用程序是我的开发机器的IIS实例,并且服务已停止—没有更多打开的连接。
是什么导致了这种减速,我能做些什么来加速它?
我试图在我的开发数据库上执行一些离线维护(从实时备份恢复开发数据库),但是通过SQL Server Management Studio执行的“脱机”命令执行得非常慢——大约30分钟以上。我只是在我的智慧的尽头,我似乎找不到任何参考网上可能导致速度问题,或如何解决它。
一些站点建议,打开到数据库的连接会导致这种放缓,但使用此数据库的唯一应用程序是我的开发机器的IIS实例,并且服务已停止—没有更多打开的连接。
是什么导致了这种减速,我能做些什么来加速它?
当前回答
为了解决这个问题,我停止了在IIS中连接到db的网站,立即“冻结”“使db离线”面板解冻。
其他回答
下次,在“脱机”对话框中,记得选中“删除所有活动连接”复选框。我也在本地机器上的SQL_EXPRESS上,没有连接,但除非我选中该复选框,否则会出现这种减速。
在SSMS中:右键单击SQL server图标,Activity Monitor。开放的过程。找到被处理的连接。右键单击进程,Kill。
很可能从某个地方连接到DB(一个罕见的例子:异步统计更新)
要查找连接,请使用sys.sysprocesses
USE master
SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('MyDB')
要强制断开连接,请使用ROLLBACK IMMEDIATE
USE master
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
执行存储过程 sp_who2
这将允许您查看是否有任何阻塞锁..杀死他们应该修复它。
我尝试了下面所有的建议,但都没用。
EXEC sp_who Kill < SPID > 将数据库设置为SINGLE_USER,并立即回滚 使用立即回滚脱机更改数据库设置 结果:上面的两个命令都被卡住了。
4所示。右键单击数据库-> Properties -> Options “数据库只读”设置为“True” 在弹出的对话框中单击“是”,警告SQL Server将关闭与数据库的所有连接。
结果:窗口在执行时卡住。
作为最后的手段,我从配置管理器中重新启动SQL server服务,然后运行ALTER DATABASE SET OFFLINE WITH ROLLBACK IMMEDIATE。这招很管用