Rah*_*418 182 sql sql-server
我需要帮助设置在SINGLE_USER
模式下恢复的数据库MULTI_USER
.每次我跑
ALTER DATABASE BARDABARD
SET MULTI_USER;
GO
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
目前无法更改数据库'BARDABARD'的状态或选项.
数据库处于单用户模式,用户当前已连接到该用户.
它需要处于非SINGLE_USER
模式才能将其设置为另一种模式,但我无法在模式下将数据库设置为任何其他SINGLE_USER
模式.
pau*_*aul 109
"用户当前连接到它"可能是SQL Server Management Studio窗口本身.尝试选择master数据库并ALTER
再次运行查询.
sge*_*des 84
该错误消息通常意味着有其他进程连接到数据库.尝试运行它以查看哪些已连接:
exec sp_who
Run Code Online (Sandbox Code Playgroud)
这将返回您的过程,然后您应该能够运行:
kill [XXX]
Run Code Online (Sandbox Code Playgroud)
其中[xxx]是spid
你想要杀死的进程.
然后你可以运行你的上述声明.
祝好运.
小智 65
您可以添加选项以立即回滚更改.
ALTER DATABASE BARDABARD
SET MULTI_USER
WITH ROLLBACK IMMEDIATE
GO
Run Code Online (Sandbox Code Playgroud)
小智 39
SQL Server 2012:
右键单击,DB > Properties > Options > [Scroll down] State > RestrictAccess > select Multi_user
然后单击"确定".
瞧!
Aza*_*ndi 19
我有同样的问题,并通过以下步骤修复 - 参考:http://giladka8.blogspot.com.au/2011/11/database-is-in-single-user-mode-and.html
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 56 => kill the number in spid field
GO
exec sp_dboption 'dbname', 'single user', 'FALSE'
GO
Run Code Online (Sandbox Code Playgroud)
小智 13
这对我来说很好.
步骤1.右键单击数据库引擎,单击活动监视器,查看哪个进程正在连接.杀死该特定用户并立即执行查询.
第2步.
USE [master];
GO
ALTER DATABASE [YourDatabaseNameHere] SET MULTI_USER WITH NO_WAIT;
GO
Run Code Online (Sandbox Code Playgroud)
并刷新数据库.
小智 9
我实际上有一个问题,我的数据库几乎被进程锁定并且与它们竞争条件,当我执行一个命令时刷新并且它再次被锁定...我必须背靠背运行以下命令在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);
Run Code Online (Sandbox Code Playgroud)
然后立即(在第二个查询窗口中):
USE master ALTER DATABASE <yourDbName> SET OFFLINE WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
做了我需要的东西,然后把它带回网上.感谢所有为我撰写这些作品的人,以便结合并解决我的问题.
我刚刚使用以下步骤修复,它可能对您有所帮助。
第1步
第2步
步骤:3
第四步
步骤:5
然后运行以下查询。
ALTER DATABASE YourDBName
SET MULTI_USER
WITH ROLLBACK IMMEDIATE
GO
Run Code Online (Sandbox Code Playgroud)
享受...!
最好直接登录服务器,而不是使用SQL Management Studio。
确保您要登录的帐户是要设置为MULTI_USER的数据库的dbowner。如果可以,请以sa登录(使用SQL Server身份验证)
如果IIS使用了您的数据库,请停止网站和使用该数据库的应用程序池 -这可能是连接的过程,并阻止您将其设置为MULTI_USER
USE MASTER
GO
-- see if any process are using *your* database specifically
SELECT * from master.sys.sysprocesses
WHERE spid > 50 -- process spids < 50 are reserved by SQL - we're not interested in these
AND dbid=DB_ID ('YourDbNameHere')
-- if so, kill the process:
KILL n -- where 'n' is the 'spid' of the connected process as identified using query above
-- setting database to read only isn't generally necessary, but may help:
ALTER DATABASE YourDbNameHere
SET READ_ONLY;
GO
-- should work now:
ALTER DATABASE Appswiz SET MULTI_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
如果您仍然遇到问题,请参考这里:
作为最后的替代方法 -如果您已尝试了上述所有操作,并且感到绝望,则可以尝试停止SQL Server实例并重新启动它
归档时间: |
|
查看次数: |
569816 次 |
最近记录: |