我正在使用SQL Server 2012而且我遇到了一个奇怪的问题。
我尝试将数据库快照还原到数据库。通常它不需要花费太多时间来恢复,但现在需要5分钟并且仍在恢复,所以我停止了查询执行。它试图阻止查询执行超过5分钟,所以我使用任务管理器关闭了SSMS。
然后我尝试使用KILL
终止恢复过程。
现在我可以连接到该服务器,但数据库列表未打开。我的意思是:无论谁连接到这台服务器,他们都无法获得数据库。当我查看sysprocesses
表时,它显示lastwaittype
为LCK_M_S
。
我的所有用户都无法查看数据库。看起来我有点搞砸了。我无法重启SQL Server,因为其他人已连接到服务器。
我该如何解决这个问题?请帮忙。
修改 我尝试了this approach,当我用
检查时select db_name(dbid), * from sysprocesses where blocked <> 0
我有两条记录,
你认为因为这两个过程的其余部分都被锁定了。
答案 0 :(得分:1)
我猜测master数据库中的sysdatabases
表上仍然存在一些隐藏锁。这很可能是由restore命令的KILL
造成的。
这篇文章可能会对您有所帮助:
http://ellisweb.net/2012/02/clearing-out-a-mysterious-table-lock-lck_m_s-in-sql-server-2008/
它基本上建议您确定隐藏锁的来源,然后在该进程ID上发出KILL
。
答案 1 :(得分:1)
尝试重新启动实例。如果您的用户无论如何都看不到任何数据库,也不会受到伤害。