我有一个单用户模式下的数据库,无法脱离单一用户模式。我已经尝试重新设置服务器,甚至尝试重新设置我的计算机,但是每次尝试对它做任何事情时,SQL server都坚持认为已经在某个地方打开了一些连接。
我真的不明白,在我刚刚重置我的电脑而没有打开到它的连接之后,怎么可能会有一个连接打开它。我使用SSMS,并使用对象资源管理器( object )连接到服务器,之后我尝试使用delete键直接从那里删除数据库(也就是说,我没有打开任何查询选项卡,所以那里肯定没有连接)。
不幸的是,我使用的应用程序不允许我指定一个数据库名,这意味着我必须弄清楚如何摆脱这个愚蠢的数据库,以便恢复另一个数据库。
我一直在谷歌和尝试不同的东西,但似乎没有任何效果.即使是应该在这种情况下起作用的东西。
所以我在这里寻找更多的想法?
编辑:
我最近的尝试是使用SP_WHO查找连接的进程,然后终止它。但每次我杀了它,它就会立刻回到另一个号码下。不明白到底是什么导致了这种行为。
EDIT2:
我只是尝试使用select * from master..sysprocesses where spid = <spid>
来查看kpid,如果我理解正确,它与任务管理器的详细信息选项卡中的PID列相关。唯一的问题是值是0,这意味着它是系统空闲进程。不过,也许我是误会了。
发布于 2014-04-02 15:05:24
太棒了!我做到了!
当我运行select * from master..sysprocesses where spid = <spid>
时,我意识到连接是从sa用户帐户建立的。我仍然不明白世界上在做什么,但我暂时禁用了sa帐户并重新启动了服务器。它无法再次建立连接,于是我删除了数据库。
发布于 2014-04-02 18:54:13
停止服务器并禁用sa
帐户对于删除数据库似乎是过分的。下一次发生这种情况时,以下几点就足够了:
USE [master];
GO
ALTER DATABASE [dbname] SET OFFLINE
WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE [dbname];
可以溜进来的连接可能来自任何地方-- server代理、链接服务器、查询窗口中的IntelliSense等等。离线设置数据库比进入单用户模式要直接得多,更不用说在不推荐的兼容性视图中不必要地跟踪某个恶意会话了……
https://dba.stackexchange.com/questions/62394
复制相似问题