我正在尝试在我的开发人员数据库上执行一些离线维护(从实时备份中恢复数据库),但是通过SQL Server Management Studio执行“脱机”命令正在慢慢执行极 - 启用现在加30分钟的顺序。我只是在我的智慧结束,我似乎无法在网上找到任何可能导致速度问题,或如何解决它的参考。
有些网站建议与数据库的开放连接导致这种速度减慢,但使用此数据库的唯一应用程序是我的开发机器的IIS实例,并且服务已停止 - 没有更多的打开连接。
可能导致这种放缓的原因,我该怎么做才能加快速度?
答案 0 :(得分:395)
经过一些额外的搜索(受到gbn的回答和u07ch对KMike答案的评论启发的新搜索条件),我发现了这个,它在2秒内成功完成:
ALTER DATABASE <dbname> SET OFFLINE WITH ROLLBACK IMMEDIATE
如果仍然因以下错误而失败,您可以将其修改为this blog post:
的启发ALTER DATABASE失败,因为无法将锁定放在数据库'dbname'以后再试。
您可以运行以下命令来找出谁在锁定您的数据库:
EXEC sp_who2
并使用您在以下命令中找到的SPID
:
KILL <SPID>
然后再次运行ALTER DATABASE
命令。现在应该可以了。
答案 1 :(得分:125)
很可能从某个地方连接到数据库(一个罕见的例子:asynchronous statistic update)
要查找连接,请使用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
答案 2 :(得分:28)
您是否有连接到此数据库的任何打开的SQL Server Management Studio窗口?
将其置于单用户模式,然后重试。
答案 3 :(得分:17)
就我而言,在等待完成之后,我没有耐心,只是关闭了管理工作室。在退出之前,它显示了成功消息,db已脱机。这些文件可以重命名。
答案 4 :(得分:6)
执行存储过程 sp_who2
这将允许您查看是否有任何阻止锁..杀死他们应该修复它。
答案 5 :(得分:5)
在SSMS中:右键单击SQL Server图标,Activity Monitor。开放流程。找到已处理的已连接。右键单击该过程,Kill。
答案 6 :(得分:4)
任何时候遇到这种类型的事情,你应该总是想到你的事务日志。具有rollback immediate的alter db statment表明情况就是如此。看看这个:http://msdn.microsoft.com/en-us/library/ms189085.aspx
确定检查点等等。您需要确定日志中的事务是否值得保存,然后选择模式以相应地运行数据库。你没有理由等待,也没有理由让你丢失数据 - 你可以同时拥有两者。
答案 7 :(得分:2)
为了解决这个问题,我停止了在IIS中连接到数据库的网站,并立即将“冻结”“脱机数据库”面板解冻。
答案 8 :(得分:2)
关闭发出请求的SSMS(SQL Service Manager)实例解决了我的问题......
答案 9 :(得分:2)
在我的情况下,我在执行此操作之前查看了数据库中的一些表。我的用户帐户在SSMS中与此DB保持活动连接。一旦我在SSMS中与服务器断开连接(打开“Take database offline”对话框),操作就成功了。
答案 10 :(得分:1)
我尝试了以下所有建议,但无济于事。
杀死
具有立即回滚功能的ALTER DATABASE SET SINGLE_USER
具有立即回滚功能的ALTER DATABASE SET OFFLINE
结果:以上两个命令也都卡住了。
4。右键单击数据库->属性->选项 将数据库只读设置为True 在警告SQL Server将关闭与数据库的所有连接的对话框中,单击“是”。
结果:窗口卡在执行中。
作为最后的选择,我从配置管理器重新启动了SQL Server服务,然后运行了ALTER DATABASE SET OFFLINE WITH ROLLBACK IMMEDIATE。就像魅力一样
答案 11 :(得分:1)
在SSMS中,将数据库设置为只读,然后再返回。连接将被关闭,从而释放锁。
在我的案例中,有一个网站与数据库有开放的连接。这种方法很简单:
Database Read-Only
设为True 答案 12 :(得分:1)
此外,关闭所有可能已打开的查询窗口,这些窗口已连接到相关数据库;)
答案 13 :(得分:0)
就我而言,数据库与旧的Sharepoint安装有关。在服务器管理器中停止和禁用相关服务&#34; unhung&#34;离线行动,已经运行了40分钟,并立即完成。
您可能希望检查当前是否有任何服务正在使用该数据库。
答案 14 :(得分:0)
在我的情况下,我停止了Tomcat服务器。然后数据库立即脱机。
答案 15 :(得分:0)
下次,请记住从“脱机”对话框中选中“丢弃所有活动连接”复选框。我也在没有连接的本地计算机上使用SQL_EXPRESS,但是除非我选中该复选框,否则这种减速会发生在我身上。
答案 16 :(得分:0)
对我来说,我只需要进入Job Activity Monitor并停止处理两件事。然后它立即下线。在我的情况下,虽然我知道这两个过程是什么,并且可以阻止它们。