Eri*_*bes 275 database performance sql-server-2005
我正在尝试在我的开发数据库上执行一些离线维护(从实时备份中删除数据库),但是通过SQL Server Management Studio执行的"Take Offline"命令执行速度非常慢 - 大约30分钟加上现在.我只是在我的智慧结束,我似乎无法在网上找到任何可能导致速度问题,或如何解决它的参考.
有些网站建议与数据库的开放连接导致这种速度减慢,但使用此数据库的唯一应用程序是我的开发机器的IIS实例,并且服务已停止 - 没有更多的打开连接.
什么可能导致这种放缓,我该怎么做才能加快速度?
Eri*_*bes 402
经过一些额外的搜索(新的搜索术语受到gbn的回答和u07ch对KMike回答的评论的启发)我发现了这个,它在2秒内成功完成:
ALTER DATABASE <dbname> SET OFFLINE WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
当这仍然失败并出现以下错误时,您可以按照此博客文章的灵感来修复它:
ALTER DATABASE失败,因为无法将锁定放在数据库'dbname'以后再试.
您可以运行以下命令来找出谁在您的数据库上保持锁定:
EXEC sp_who2
Run Code Online (Sandbox Code Playgroud)
并使用SPID
您在以下命令中找到的任何内容:
KILL <SPID>
Run Code Online (Sandbox Code Playgroud)
然后ALTER DATABASE
再次运行该命令.它现在应该工作.
gbn*_*gbn 127
很可能是从某个地方连接到数据库(一个罕见的例子:异步统计更新)
要查找连接,请使用sys.sysprocesses
USE master
SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('MyDB')
Run Code Online (Sandbox Code Playgroud)
要强制断开连接,请使用ROLLBACK IMMEDIATE
USE master
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
KM.*_*KM. 28
您是否有连接到此数据库的任何打开的SQL Server Management Studio窗口?
将其置于单用户模式,然后再试一次.
小智 5
就我而言,在执行此操作之前,我查看了数据库中的一些表。我的用户帐户在 SSMS 中保持与此数据库的活动连接。一旦我与 SSMS 中的服务器断开连接(保持“使数据库脱机”对话框打开),操作就成功了。