我需要重新启动一个数据库,因为一些进程不工作。我的计划是让它离线,然后再重新上线。
我正尝试在Sql Server Management Studio 2008中执行此操作:
use master;
go
alter database qcvalues
set single_user
with rollback immediate;
alter database qcvalues
set multi_user;
go
我收到以下错误:
Msg 5061, Level 16, State 1, Line 1
ALTER DATABASE failed because a lock could not be placed on database 'qcvalues'. Try again later.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
Msg 5061, Level 16, State 1, Line 4
ALTER DATABASE failed because a lock could not be placed on database 'qcvalues'. Try again later.
Msg 5069, Level 16, State 1, Line 4
ALTER DATABASE statement failed.
我做错了什么?
发布于 2011-01-13 03:50:28
得到错误后,运行
EXEC sp_who2
在列表中查找数据库。连接可能未终止。如果找到与数据库的任何连接,请运行
KILL <SPID>
其中<SPID>
是连接到数据库的会话的SPID。
在删除与数据库的所有连接后尝试您的脚本。
不幸的是,我不知道你为什么会看到这个问题,但这里有一个链接,表明这个问题已经在其他地方发生了。
发布于 2011-01-13 04:11:29
通过执行以下操作,我设法重现了这个错误。
连接1(让运行几分钟)
CREATE DATABASE TESTING123
GO
USE TESTING123;
SELECT NEWID() AS X INTO FOO
FROM sys.objects s1,sys.objects s2,sys.objects s3,sys.objects s4 ,sys.objects s5 ,sys.objects s6
连接2和3
set lock_timeout 5;
ALTER DATABASE TESTING123 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
发布于 2012-09-29 08:17:09
如果它是“过渡中”,试试这个……
http://learnmysql.blogspot.com/2012/05/database-is-in-transition-try-statement.html
USE master
GO
ALTER DATABASE <db_name>
SET OFFLINE WITH ROLLBACK IMMEDIATE
...
...
ALTER DATABASE <db_name> SET ONLINE
https://stackoverflow.com/questions/4673065
复制相似问题