目前,我的数据库处于单用户模式。当我试图扩展我的数据库,我得到一个错误:

数据库my_db不可访问。

此外,当我试图删除数据库时,我得到错误:

无法更改数据库'my_db'的状态或选项 这一次。数据库为单用户模式,用户为 当前连接到它。

如何退出单用户模式?我没有任何用户使用这个数据库。

当我尝试用IIS浏览我的网站时,我得到的错误是:

类的执行期间生成了未处理的异常 当前的web请求。关于起源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。

我觉得这是单用户模式造成的。


当前回答

今天我遇到了同样的问题,我的数据库从多用户模式改为单用户模式,这最终阻止了我发布数据库。

为了解决这个问题,我不得不关闭所有Visual Studio实例,并在Sql Server查询窗口中运行以下命令-

USE [Your_Database_Name]; ALTER DATABASE [Your_Database_Name] SET MULTI_USER GO

这个命令将数据库从单用户更改为多用户,之后,我成功地能够发布。

其他回答

今天早上我遇到了同样的问题。这原来是一个简单的问题。我打开了一个查询窗口,它被设置为对象资源管理器中的单用户数据库。sp_who2存储过程没有显示该连接。一旦我把它合上,我就能把它设置成

要切换出单用户模式,请尝试:

设置数据库的多用户

要切换回单用户模式,您可以使用:

修改数据库[my_db

右键单击数据库部分中的数据库 选择“属性” 选择“选项”页 向下滚动“其他选项”并更改“限制访问”字段

首先,查找并终止当前正在运行的所有进程。

然后,运行下面的T-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

我也遇到了同样的问题,使用下面的查询找到了session_id来kill:

Select request_session_id From sys.dm_tran_locks Where resource_database_id=DB_ID('BI_DB_Rep');