Programing

SQL Server 2008 R2에서 데이터베이스 이름을 바꾸는 중 오류가 발생했습니다

lottogame 2020. 6. 12. 22:08
반응형

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
    

개체 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성으로 이동할 수도 있습니다. 거기에서 옵션으로 이동하십시오. 맨 아래로 스크롤하여 액세스 제한을 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

Replace connection_id with the ID in the results of the 1st query


1.database set 1st single user mode

ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE

2.RENAME THE DATABASE

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

3.DATABAE SET MULIUSER MODE

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER WITH ROLLBACK IMMEDIATE


Another way to close all connections:

Administrative Tools > View Local Services

Stop/Start the "SQL Server (MSSQLSERVER)" service


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

반응형