이 쿼리를 사용하여 데이터베이스의 이름을 바꾸고 있습니다.
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
그러나 실행시 오류가 표시됩니다.
메시지 5030, 수준 16, 상태 2, 줄 1
데이터베이스를 작업을 수행하기 위해 독점적으로 잠글 수 없습니다.
내 질문에 문제가 있습니까?
이 쿼리를 사용하여 데이터베이스의 이름을 바꾸고 있습니다.
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
WITH ROLLBACK IMMEDIATE
필요. 전혀 사용하지 않으면 문제가 발생합니까?
WITH ROLLBACK IMMEDIATE
이러한 작업의 무결성을 보장하기 위해 다른 사용자가 작업중인 데이터베이스를 변경하는 동안 사용해야 합니다. 그러나 데이터베이스가 이미 SINGLE_USER 모드에 있고 트랜잭션을 실행할 수있는 유일한 사용자이므로 데이터베이스를 다시 MULTI_USER 모드로 다시 설정할 때는 실제로 필요하지 않습니다.
데이터베이스를 단일 모드로 설정하십시오.
ALTER DATABASE dbName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
데이터베이스 이름을 바꾸십시오.
ALTER DATABASE dbName MODIFY NAME = NewName
데이터베이스를 다중 사용자 모드로 설정하십시오.
ALTER DATABASE NewName
SET MULTI_USER WITH ROLLBACK IMMEDIATE
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
다른 답변에 표시된 것처럼 데이터베이스를 단일 사용자 모드로 변경하십시오.
단일 사용자 모드로 변환 한 후에도 데이터베이스에 허용 된 유일한 연결이 사용 중일 수 있습니다.
단일 사용자 모드로 변환 한 후에도 연결을 닫으려면 다음을 시도하십시오.
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로 바꿉니다.
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER