Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 通过management studio将数据库设置为多用户_Sql Server_Database_Multi User_Single User - Fatal编程技术网

Sql server 通过management studio将数据库设置为多用户

Sql server 通过management studio将数据库设置为多用户,sql-server,database,multi-user,single-user,Sql Server,Database,Multi User,Single User,我不得不将我的数据库设置为单用户模式,以允许进行dbcc checkdb修复,现在我无法将我的数据库恢复到多用户模式。我在主数据库的查询窗口中尝试了以下命令,但它没有按照另一个堆栈溢出帖子的建议工作: USE [master]; GO ALTER DATABASE mydb SET MULTI_USER WITH ROLLBACK IMMEDIATE; GO 我得到以下错误: Msg 5064,16级,状态1,第2行更改为 此时无法创建数据库“mydb”。数据库在运行中 单用户模式,并

我不得不将我的数据库设置为单用户模式,以允许进行
dbcc checkdb
修复,现在我无法将我的数据库恢复到多用户模式。我在主数据库的查询窗口中尝试了以下命令,但它没有按照另一个堆栈溢出帖子的建议工作:

USE [master]; 
GO 

ALTER DATABASE mydb SET MULTI_USER WITH ROLLBACK IMMEDIATE; 
GO
我得到以下错误:

Msg 5064,16级,状态1,第2行更改为 此时无法创建数据库“mydb”。数据库在运行中 单用户模式,并且用户当前已连接到该模式。
味精5069, 级别16,状态1,第2行ALTER DATABASE语句失败

如果我右键单击数据库并尝试选择属性,则会出现错误,表明它已在使用中


任何帮助都将不胜感激。

首先尝试选择主数据库并运行alter命令

如果它不起作用,则存在一些到数据库的开放连接,您可以检查并终止这些进程

use master
GO

select 
d.name, 
d.dbid, 
spid, 
login_time, 
nt_domain, 
nt_username, 
loginame
from sysprocesses p 
inner join sysdatabases d 
    on p.dbid = d.dbid
where d.name = 'dbname'
GO

kill 52 -- kill the number in spid field
GO

exec sp_dboption 'dbname', 'single user', 'FALSE'
GO

尝试终止现有连接并在同一批中设置多个用户:

USE master; 
GO
DECLARE @sql nvarchar(MAX);
SELECT @sql = ' KILL ' + CAST(session_id as varchar(5))
    FROM sys.dm_exec_sessions
    WHERE database_id = DB_ID(N'mydb');
SET @sql = @sql + N' ALTER DATABASE mydb SET MULTI_USER;';
EXEC sp_executesql @sql;
GO

要获取绑定到我运行的数据库的会话,请执行以下操作:

选择请求会话id 来自sys.dm_tran_locks 其中resource\u database\u id=DB\u id('mydb')

这产生了55的进程ID

然后我跑:

杀55 去


我能够使用以前不起作用的alter multi_user行

出现此错误的最可能原因是您仍然打开了用于将数据库设置为单用户的原始会话。如果在将数据库设置为“单用户”的同一会话中执行上述SQL,则该SQL将正常工作。

您可以使数据库脱机吗?否这也会失败,因为它处于单用户模式相同错误如果有任何作业或SQL代理启动,请停止所有这些操作(MSSQLSERVER除外)还有-使用sa用户-再试一次。这个查询从单用户数据库改为多用户数据库真是太棒了Mamma Mia,这终于救了我!!谢谢@Dan!