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
데이터베이스를 싱글 모드로 설정합니다.
ALTER DATABASE dbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE데이터베이스 이름 바꾸기:
ALTER DATABASE dbName MODIFY NAME = NewName데이터베이스를 멀티사용자 모드로 설정합니다.
ALTER DATABASE NewName SET MULTI_USER WITH ROLLBACK IMMEDIATE
SQL Server Management Studio(SSMS):
개체 탐색기에서 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동할 수도 있습니다.여기서 Options로 이동합니다.아래로 스크롤하여 액세스 제한을 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
1.120 첫 번째 싱글 사용자 모드 설정
데이터베이스 BOSEVICRAM 세트 SINGLE_User를 즉시 롤백하여 변경
2. 데이터베이스 이름 변경
ALTER 데이터베이스 BOSEVIKRAM 이름 수정 = [BOSEVIKRAM_Deleted]
3. Databae 설정 멀티 사용자 모드
데이터베이스 BOSEVICRAM_Deleted SET MULTI_USER를 롤백으로 즉시 변경
다른 사람이 데이터베이스에 접속하고 있기 때문입니다.데이터베이스를 단일 사용자 모드로 전환한 후 이름을 변경합니다.
이 링크는 도움이 됩니다.
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를 ID로 바꿉니다.
데이터베이스 이름을 바꾸지 못한 이유는 활성 연결이 있기 때문입니다.먼저 데이터베이스를 오프라인으로 전환하고 Drop All Active Connections를 선택합니다.그런 다음 다시 온라인 상태로 전환하면 데이터베이스 이름을 이미 바꿀 수 있습니다.
모든 연결을 닫는 다른 방법:
관리도구>로컬서비스 표시
"SQL Server(MSSQLSERVER)" 서비스를 중지/시작합니다.
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
언급URL : https://stackoverflow.com/questions/16685269/error-on-renaming-database-in-sql-server-2008-r2
'programing' 카테고리의 다른 글
| T-SQL에서 테이블을 스키마로 이동하려면 어떻게 해야 합니까? (0) | 2023.04.08 |
|---|---|
| 그룹별로 반환된 레코드 수: (0) | 2023.04.08 |
| 모든 테이블, 저장 프로시저, 트리거, 제약 조건 및 모든 종속성을 하나의 SQL 문으로 삭제합니다. (0) | 2023.04.08 |
| 한 테이블에서 다른 테이블에 존재하지 않는 모든 레코드를 선택하려면 어떻게 해야 합니까? (0) | 2023.04.08 |
| T-SQL의 테이블 변수로 선택 (0) | 2023.04.08 |
