我需要帮助设置在SINGLE_USER模式恢复到MULTI_USER的数据库。每次我奔跑

ALTER DATABASE BARDABARD
SET MULTI_USER;
GO

我得到这个错误:

目前不能更改数据库'BARDABARD'的状态或选项。 数据库处于单用户模式,当前有用户连接到数据库。

它需要在非SINGLE_USER模式下将其设置为另一种模式,但当它是SINGLE_USER模式时,我不能将数据库设置为任何其他模式。


当前回答

你不能这样做,因为数据库在单一模式下。好的,但你应该知道:当你打开sql management studio时,它不知道数据库上的任何用户,但当你点击数据库时,它认为你是单个用户,你的命令不工作。 只要这样做:关闭管理工作室,然后重新打开。新的查询窗口无需选择任何数据库编写命令脚本。

USE [master];
GO
ALTER DATABASE [tuncayoto] SET MULTI_USER WITH NO_WAIT;
GO 

使f5 wolla一切正常!

其他回答

在超过3次使用SQL Server 2014的情况下,我有一个数据库转换为单用户模式,而我没有做任何改变。它一定是在数据库创建过程中以某种方式发生的。上面所有的方法从来没有工作过,因为我总是收到一个错误,数据库处于单用户模式,无法连接到。

我唯一要做的就是重新启动SQL Server Windows服务。这允许我连接到数据库并进行必要的更改,或者删除数据库并重新开始。

这对我来说很有效。

步骤1。右键单击数据库引擎,单击活动监视器,查看哪个进程正在连接。立即终止特定用户并执行查询。

步骤2。

USE [master];
GO
ALTER DATABASE [YourDatabaseNameHere] SET MULTI_USER WITH NO_WAIT;
GO  

并刷新数据库。

该错误消息通常意味着还有其他进程连接到DB。试着运行这个,看看哪些是连接的:

exec sp_who

这将返回进程,然后你应该能够运行:

kill [XXX]

其中[xxx]是您试图杀死的进程的蜘蛛。

然后你可以运行上面的语句。

如果上面的不起作用,找到spid的登录名并在Security - Logins中禁用它

我实际上有一个问题,我的db几乎被进程和竞争条件锁定,当我得到一个命令执行刷新时,他们再次锁定…我不得不在SSMS中背靠背地运行以下命令,让我离线,从那里我做了我的恢复,并恢复在线,这两个查询在哪里:

第一个跑:

USE master
GO

DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), spid) + ';'
FROM master..sysprocesses 
WHERE dbid = db_id('<yourDbName>')

EXEC(@kill);

然后紧接着(在第二个查询窗口中):

USE master ALTER DATABASE <yourDbName> SET OFFLINE WITH ROLLBACK IMMEDIATE

做了我需要做的,然后重新上线。感谢所有为我写这些文章的人,让我把这些文章结合起来,解决我的问题。