首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ALTER DATABASE失败,因为无法在数据库上放置锁

ALTER DATABASE失败,因为无法在数据库上放置锁
EN

Stack Overflow用户
提问于 2011-01-13 03:23:25
回答 8查看 206.8K关注 0票数 131

我需要重新启动一个数据库,因为一些进程不工作。我的计划是让它离线,然后再重新上线。

我正尝试在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.

我做错了什么?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-13 03:50:28

得到错误后,运行

EXEC sp_who2

在列表中查找数据库。连接可能未终止。如果找到与数据库的任何连接,请运行

KILL <SPID>

其中<SPID>是连接到数据库的会话的SPID。

在删除与数据库的所有连接后尝试您的脚本。

不幸的是,我不知道你为什么会看到这个问题,但这里有一个链接,表明这个问题已经在其他地方发生了。

http://www.geakeit.co.uk/2010/12/11/sql-take-offline-fails-alter-database-failed-because-a-lock-could-not-error-5061/

票数 306
EN

Stack Overflow用户

发布于 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;
票数 5
EN

Stack Overflow用户

发布于 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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4673065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档