[sql] SQL Server 2008 R2에서 데이터베이스 이름 변경시 오류

이 쿼리를 사용하여 데이터베이스의 이름을 바꾸고 있습니다.

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

그러나 실행시 오류가 표시됩니다.

메시지 5030, 수준 16, 상태 2, 줄 1
데이터베이스를 작업을 수행하기 위해 독점적으로 잠글 수 없습니다.

내 질문에 문제가 있습니까?



답변

데이터베이스를 단일 사용자 모드로 설정해 볼 수 있습니다.

https://stackoverflow.com/a/11624/2408095

use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER


답변

  1. 데이터베이스를 단일 모드로 설정하십시오.

    ALTER DATABASE dbName
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE
  2. 데이터베이스 이름을 바꾸십시오.

    ALTER DATABASE dbName MODIFY NAME = NewName
  3. 데이터베이스를 다중 사용자 모드로 설정하십시오.

    ALTER DATABASE NewName
    SET MULTI_USER WITH ROLLBACK IMMEDIATE

답변

에서 SQL Server 관리 Studio (SSMS) :

개체 탐색기 에서 데이터베이스를 마우스 오른쪽 단추로 클릭 하고 속성으로 이동할 수도 있습니다. 거기에서 옵션으로 이동하십시오 . 아래로 스크롤하여 액세스 제한SINGLE_USER로 설정 하십시오 . 데이터베이스 이름을 변경 한 다음 다시 들어가서 MULTI_USER로 설정하십시오 .


답변

먼저 데이터베이스에 대한 모든 연결을 닫으십시오.

use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER

여기 에서 찍은


답변

이것은 나를 위해 그것을했다 :

USE [master];
GO
ALTER DATABASE [OldDataBaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_renamedb N'OldDataBaseName', N'NewDataBaseName';


-- Add users again
ALTER DATABASE [NewDataBaseName] SET MULTI_USER
GO


답변

다른 사람이 데이터베이스에 액세스하고 있기 때문입니다. 데이터베이스를 단일 사용자 모드로 설정 한 후 이름을 바꾸십시오.

이 링크는 다음에 도움이 될 수 있습니다.
http://msdn.microsoft.com/en-IN/library/ms345378(v=sql.105).aspx

또한 :
http://msdn.microsoft.com/en-us/library/ms345378.aspx


답변

다른 답변에 표시된 것처럼 데이터베이스를 단일 사용자 모드로 변경하십시오.

단일 사용자 모드로 변환 한 후에도 데이터베이스에 허용 된 유일한 연결이 사용 중일 수 있습니다.

단일 사용자 모드로 변환 한 후에도 연결을 닫으려면 다음을 시도하십시오.

select * from master.sys.sysprocesses
where spid>50 -- don't want system sessions
  and dbid = DB_ID('BOSEVIKRAM')

결과를보고 해당 데이터베이스에 대한 연결 ID를보십시오.

그런 다음 아래 명령을 사용하여이 연결을 닫으십시오 (데이터베이스가 단일 사용자 모드에 있으므로 하나만 있어야 함).

KILL connection_ID

첫 번째 쿼리 결과에서 connection_id를 ID로 바꿉니다.