programing

SQL Server 2008 R2에서 데이터베이스 이름 변경 중 오류 발생

elecom 2023. 4. 8. 07:57
반응형

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 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

반응형