2007~2011/SQL Server2011. 11. 25. 16:03

SQL Server 의 데이터베이스를 분리한 뒤 파일을 복사하고 다른 머신에서 연결을 시도하였으나 읽기 전용 상태가 된다면?


[환경]
SQL Server 2008 R2


[현상]
Sp_detach_db 프로시저를 사용하여 데이터베이스를 정상적으로 분리한 뒤, 다른 머신으로 파일을 복사한 후 sp_attach_db 프로시저를 사용하여 데이터베이스를 연결하였으나 개체탐색기에서 보이는 것과 같이 데이터베이스 상태가 "Read-Only" 로 나타납니다.


[원인]
데이터베이스 데이터 파일인 MDF 파일의 속성이 Read-Only 로 설정되어 있습니다.


[해결방안]
읽기 전용으로 연결된 데이터베이스를 분리한 후 데이터 파일의 속성에서 읽기 전용을 해제한 후 다시 연결합니다.


[분석결과]
1. 데이터베이스 상태 확인

 select name,STATUS from sys.sysdatabases WHERE name = 'GAME'
 GO
 -------------------------------------
 GAME 1073808384


2. GAME.MDF 파일 속성 : Read-Only




3. 데이터베이스 속성을 Read-Only 상태에서 READ_WRITE 로 변경할 경우 아래와 같은 오류가 발생합니다.

 USE [master]
 GO
 ALTER DATABASE [GAME] SET  READ_WRITE
 GO

 Msg 5120, Level 16, State 101, Line 1
 Unable to open the physical file "D:\SQL\DATA\GAME.MDF". Operating system error 5: "5(failed to retrieve text for this error. Reason: 15105)".
 Msg 945, Level 14, State 2, Line 1
 Database 'GAME' cannot be opened due to inaccessible files or insufficient memory or disk space.  See the SQL Server errorlog for details.
 Msg 5069, Level 16, State 1, Line 1
 ALTER DATABASE statement failed.



 4. 만약 LDF 파일에만 Read-Only 가 부여되어 있다면 데이터베이스가 attach 되지 않고 아래와 같은 오류가 발생합니다.

 -- LDF 파일만 Read-only 일 경우
 Msg 5120, Level 16, State 101, Line 1
 Unable to open the physical file "D:\SQL\DATA\GAME_log.LDF". Operating system error 5: "5(failed to retrieve text for this error. Reason: 15105)".
 File activation failure. The physical file name "D:\SQL\DATA\GAME_log.LDF" may be incorrect.
 Msg 5170, Level 16, State 1, Line 1
 Cannot create file 'D:\SQL\DATA\GAME_log.LDF' because it already exists. Change the file path or the file name, and retry the operation.
 Msg 1813, Level 16, State 2, Line 1
 Could not open new database 'GAME'. CREATE DATABASE is aborted.



작성자 : Lai Go / 작성일자 : 2011.11.25

Posted by 사용자 Lai Go

댓글을 달아 주세요

  1. 좋은내용이네요^^ 그런데 attache 된 데이터베이스가 읽기 전용(read only)로 보인다고 다시 detache 하지 않고도해당 데이터베이스의 속성 => 옵션 => 상태 => 읽기전용의 값을 False로 변경 하면 정상적으로 DB 인식이 되더라구요^^

    2011.11.27 03:28 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 덧글 고맙습니다. 데이터베이스 옵션이 'read_only' 로 변경된 것은 말씀하신 것과 같이 ALTER DATABASE 로 가능하지만 포스팅된 사례는 데이터 파일(*.MDF)의 속성이 변경된 경우라서 운영체제 레벨의 파일 속성 변경이 필요합니다. ^^;

      2011.11.28 15:07 신고 [ ADDR : EDIT/ DEL ]