데이터베이스의 이름을 바꾸고 싶지만 데이터베이스에서 ‘배타적 잠금을 얻을 수 없습니다’라는 오류가 계속 발생합니다. 이는 일부 연결이 아직 활성 상태임을 의미합니다.
데이터베이스에 대한 모든 연결을 종료하여 이름을 바꿀 수 있습니까?
답변
Adam이 제안한 접근 방식이 작동하지 않는 이유 는 활성 연결을 반복하는 동안 새로운 연결을 설정할 수 있기 때문입니다. 대신이 단점이없는 다음 방법을 사용할 수 있습니다.
-- set your current connection to use master otherwise you might get an error
use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
--do you stuff here
ALTER DATABASE YourDatabase SET MULTI_USER
답변
이를 수행하기위한 스크립트, ‘DB_NAME’을 데이터베이스로 바꾸어 다음에 대한 모든 연결을 종료하십시오.
USE master
GO
SET NOCOUNT ON
DECLARE @DBName varchar(50)
DECLARE @spidstr varchar(8000)
DECLARE @ConnKilled smallint
SET @ConnKilled=0
SET @spidstr = ''
Set @DBName = 'DB_NAME'
IF db_id(@DBName) < 4
BEGIN
PRINT 'Connections to system databases cannot be killed'
RETURN
END
SELECT @spidstr=coalesce(@spidstr,',' )+'kill '+convert(varchar, spid)+ '; '
FROM master..sysprocesses WHERE dbid=db_id(@DBName)
IF LEN(@spidstr) > 0
BEGIN
EXEC(@spidstr)
SELECT @ConnKilled = COUNT(1)
FROM master..sysprocesses WHERE dbid=db_id(@DBName)
END
답변
그것을 죽이고 불로 죽여라.
USE master
go
DECLARE @dbname sysname
SET @dbname = 'yourdbname'
DECLARE @spid int
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname)
WHILE @spid IS NOT NULL
BEGIN
EXECUTE ('KILL ' + @spid)
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) AND spid > @spid
END
답변
SQL Management Studio Express 사용 :
개체 탐색기 트리에서 관리에서 “활동 모니터”로 드릴 다운합니다 (찾을 수 없으면 데이터베이스 서버를 마우스 오른쪽 단추로 클릭하고 “활동 모니터”를 선택하십시오). 활동 모니터를 열면 모든 프로세스 정보를 볼 수 있습니다. 관심있는 데이터베이스에 대한 잠금을 찾고 해당 잠금을 종료하면 연결이 끊어집니다.
그 후에 이름을 바꿀 수 있어야합니다.
답변
나는 항상 사용했다 :
ALTER DATABASE DB_NAME SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
SP_RENAMEDB 'DB_NAME','DB_NAME_NEW'
Go
ALTER DATABASE DB_NAME_NEW SET MULTI_USER -- set back to multi user
GO
답변
ALTER DATABASE [Test]
SET OFFLINE WITH ROLLBACK IMMEDIATE
ALTER DATABASE [Test]
SET ONLINE
답변
오프라인 상태로 전환하는 데 시간이 걸리고 때로는 문제가 있습니다 ..
내 의견으로는 가장 확실한 방법 :
떼다
DB-> 작업-> 분리 …를 마우스 오른쪽 단추로 클릭하십시오. “연결 끊기”를 확인하십시오. 확인
다시 연결
데이터베이스-> 첨부 …를 마우스 오른쪽 단추로 클릭하십시오. 추가 …-> 데이터베이스를 선택하고 다른 이름으로 첨부 열을 원하는 데이터베이스 이름으로 변경하십시오. 확인
