我有一个单用户模式的数据库,我无法退出单用户模式。我尝试过重置服务器,甚至尝试过重置我的计算机,但每次尝试对它做任何事情时,SQL Server 都坚持认为某处已经打开了一些连接。
我真的不明白在我刚刚重置我的计算机并且没有打开与它的连接之后,它怎么可能打开一个连接。我正在使用 SSMS 并使用对象资源管理器建立了与服务器的连接,之后我尝试使用删除键直接从那里删除数据库(即我没有打开任何查询选项卡,所以那里肯定没有连接)。
不幸的是,我使用的应用程序不允许我指定数据库名称,这意味着我必须弄清楚如何摆脱这个愚蠢的数据库,以便恢复另一个数据库。
我一直在谷歌搜索并尝试不同的东西,但似乎没有任何效果......即使是在这种情况下应该有效的东西。
所以我在这里寻找更多的想法???
编辑:
我最近的尝试是使用 SP_WHO 来查找连接的进程,然后 KILL 它。但是每次我杀死它时,它都会立即回到另一个数字之下。不明白世界上有什么可能导致这种行为。
编辑2:
我只是试图select * from master..sysprocesses where spid = <spid>
查看 kpid,如果我理解正确,它与任务管理器上详细信息选项卡中的 PID 列相关。唯一的问题是该值为 0,这意味着它是系统空闲进程。也许我在这里误解了一些东西。
停止服务器并禁用
sa
帐户似乎删除数据库有点过分。下次发生这种情况时,以下内容就足够了:可能潜入的连接可能来自任何东西 - SQL Server 代理、链接服务器、查询窗口中的 IntelliSense 等。将数据库设置为离线甚至比进入单用户模式更直接,更不用说不必要的追踪已弃用的兼容性视图中的一些恶意会话...
是的!!!我做的!!!
当我运行时
select * from master..sysprocesses where spid = <spid>
,我意识到连接是从 sa 用户帐户建立的。我仍然不明白到底在做什么,但我暂时禁用了 sa 帐户并重新启动了服务器。它无法再次建立连接,我删除了数据库。