目前,我的数据库处于单用户模式。当我试图扩展我的数据库,我得到一个错误:
数据库my_db不可访问。
此外,当我试图删除数据库时,我得到错误:
无法更改数据库'my_db'的状态或选项 这一次。数据库为单用户模式,用户为 当前连接到它。
如何退出单用户模式?我没有任何用户使用这个数据库。
当我尝试用IIS浏览我的网站时,我得到的错误是:
类的执行期间生成了未处理的异常 当前的web请求。关于起源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
我觉得这是单用户模式造成的。
目前,我的数据库处于单用户模式。当我试图扩展我的数据库,我得到一个错误:
数据库my_db不可访问。
此外,当我试图删除数据库时,我得到错误:
无法更改数据库'my_db'的状态或选项 这一次。数据库为单用户模式,用户为 当前连接到它。
如何退出单用户模式?我没有任何用户使用这个数据库。
当我尝试用IIS浏览我的网站时,我得到的错误是:
类的执行期间生成了未处理的异常 当前的web请求。关于起源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
我觉得这是单用户模式造成的。
当前回答
不确定这是否对任何人都有帮助,但我也有同样的问题,找不到阻碍我的过程。我关闭了SSMS并停止了所有访问本地实例的服务。然后,当我返回并运行exec sp_who2时,它显示了罪魁祸首。我杀死了进程,并能够让Multi_User工作,然后重新启动服务。我们让IIS每隔几分钟/秒就会搜索特定的包。
其他回答
我试过了,有效果
ALTER DATABASE dbName SET MULTI_USER WITH ROLLBACK IMMEDIATE
首先,查找并终止当前正在运行的所有进程。
然后,运行下面的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');
不确定这是否对任何人都有帮助,但我也有同样的问题,找不到阻碍我的过程。我关闭了SSMS并停止了所有访问本地实例的服务。然后,当我返回并运行exec sp_who2时,它显示了罪魁祸首。我杀死了进程,并能够让Multi_User工作,然后重新启动服务。我们让IIS每隔几分钟/秒就会搜索特定的包。
另一种选择是:
使数据库脱机;在短信服务中,右键单击数据库,选择脱机,勾选“删除所有连接” 运行ALTER DATABASE [Your_Db] SET MULTI_USER