我需要帮助设置在SINGLE_USER模式恢复到MULTI_USER的数据库。每次我奔跑
ALTER DATABASE BARDABARD
SET MULTI_USER;
GO
我得到这个错误:
目前不能更改数据库'BARDABARD'的状态或选项。 数据库处于单用户模式,当前有用户连接到数据库。
它需要在非SINGLE_USER模式下将其设置为另一种模式,但当它是SINGLE_USER模式时,我不能将数据库设置为任何其他模式。
我需要帮助设置在SINGLE_USER模式恢复到MULTI_USER的数据库。每次我奔跑
ALTER DATABASE BARDABARD
SET MULTI_USER;
GO
我得到这个错误:
目前不能更改数据库'BARDABARD'的状态或选项。 数据库处于单用户模式,当前有用户连接到数据库。
它需要在非SINGLE_USER模式下将其设置为另一种模式,但当它是SINGLE_USER模式时,我不能将数据库设置为任何其他模式。
当前回答
我在谷歌上搜索了一段时间,最终找到了下面的解决方案,
SSMS通常在幕后使用到数据库的多个连接。
在更改访问模式之前,您需要终止这些连接。(我用EXEC(@kill)做过;在下面的代码模板中。)
然后,
运行以下SQL将数据库设置为MULTI_USER模式。
USE master
GO
DECLARE @kill varchar(max) = '';
SELECT @kill = @kill + 'KILL ' + CONVERT(varchar(10), spid) + '; '
FROM master..sysprocesses
WHERE spid > 50 AND dbid = DB_ID('<Your_DB_Name>')
EXEC(@kill);
GO
SET DEADLOCK_PRIORITY HIGH
ALTER DATABASE [<Your_DB_Name>] SET MULTI_USER WITH NO_WAIT
ALTER DATABASE [<Your_DB_Name>] SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO
要切换回单用户模式,您可以使用:
ALTER DATABASE [<Your_DB_Name>] SET SINGLE_USER
这应该有用。编码快乐! !
谢谢! !
其他回答
我刚固定使用以下步骤,它可能会帮助你。
步骤:1
一步:2
一步:3
一步:4
一步:5
然后运行下面的查询。
ALTER DATABASE YourDBName
SET MULTI_USER
WITH ROLLBACK IMMEDIATE
GO
享受……!
进入单用户模式后,客户端只能与SQL Server建立一个连接,记住“对象资源管理器”占用一个(单独的)连接,所以如果你试图在查询窗口中运行多用户语句,你会得到在单用户模式下无法建立另一个连接的错误。
但对我来说,这不是问题,在我的情况下,很少有自动进程持续地(每隔几秒钟)建立连接,所以一旦我将DB设置为单用户模式并断开连接,其中一个进程就建立/占用了连接(在我可以开始恢复操作之前)。一旦我杀死这些连接,它们就会重新连接,当我运行恢复命令时,我会得到连接已经被占用的错误。
为了解决这个问题,我不得不在一个查询窗口中编写kill语句,更改User-Mode语句和Restore操作,当我一次性运行它们时,瞧!!它工作。
希望这能帮助到其他人。
SQL Server 2012:
右键单击DB > Properties > Options >[向下滚动]State > RestrictAccess >选择Multi_user,然后单击OK。
拖鞋!
我和当地的数据库出了点问题。
我能够通过停止SQL server来解决这个问题,然后启动SQL server,然后使用SSMS UI将DB属性更改为Multi_User。
当我试图恢复备份时,数据库进入“单用户”模式。在尝试恢复之前,我没有创建目标数据库的备份(SQL 2017)。这样你每次都能成功。
停止SQL Server,启动SQL Server,然后运行上述脚本或使用用户界面。
你不能这样做,因为数据库在单一模式下。好的,但你应该知道:当你打开sql management studio时,它不知道数据库上的任何用户,但当你点击数据库时,它认为你是单个用户,你的命令不工作。 只要这样做:关闭管理工作室,然后重新打开。新的查询窗口无需选择任何数据库编写命令脚本。
USE [master];
GO
ALTER DATABASE [tuncayoto] SET MULTI_USER WITH NO_WAIT;
GO
使f5 wolla一切正常!