본문 바로가기
MS-SQL

MDF가 손상되었을 경우

by 캡틴노랑이 2015. 7. 28.
반응형

▧ MDF 파일이 손상이 되어(깨졌을 경우) Database 가 정상적으로 작동하지 않을때의 방법

 

EX)) MDF 파일이 손상이 되어 Attach 작업이 되지 않을 경우

 

1.

먼저 문제가 된 MDF 파일을 다른 경로로 백업을 해놓는다

그런다음 문제가 된 Database 를 새로 생성한다. 이때 MDF 파일을 문제가 된 MDF 파일의 사이즈와 같게하여 생성한다. 이 경우 LDF 파일은 1MB 로 설정을 한다.

 

2.

SQL SERVICE 종료하고 문제가 된 MDF파일을 새로 생성한 MDF에 덮어씌운다

 

3.

SQL SERVICE 재시작

 

4.

<EMERGENCY BYPASS MODE & REBUILD TRANSACTION LOG>

-- 이 경우 해당 DB가 응급모드 상태로 올라올 것이다.

--시스템 테이블 값을 업데이트 할 수 있도록 해당 작업을 수행한다

EXEC sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
GO

 

--먼저 나중을 위해서 해당 DB의 정보를 조회하여 기록을 해둔다

select dbid, name status from sysdatabases where name = '<DATABASE NAME>'

 

BEGIN TRAN

UPDATE master..sysdatabases
SET status = status | 32768
WHERE name = '<DATABASE NAME>'

COMMIT TRAN

 

--SQL SERVICE 재시작. 이 시점에서 DATABASE는 응급모드로 시작이 된다

현재 시점에서 데이터베이스는 어떠한 데이터도 업데이트가 될 수 없다.

 

--트랜잭션 로그파일을 새로이 생성한다

EXEC sp_dboption '<DABASES NAME>', 'SINGLE USER', TRUE

GO

 

BEGIN TRAN

UPDATE sysdatabases set status = 0 where name = '<DATABASES NAME>'

COMMIT TRAN

 

DBCC rebuild_log('<DATABASE NAME>', 'LDF FILE 경로')

~~주의사항

rebuild_log 는 SQL 2005에서는 더 이상 사용할 수 없으므로 ATTACH_REBUILD_LOG 를 이용하여야 한다.

 

 

--시스템 테이블을 업데이트 할 수 있도록 설정을 바꾼다

sp_configure 'allow updates', 0

reconfigure with override

go

 

--SQL SERVER 재시작

 

--DATABASE 복구 작업을 수행한다

sp_dboption '<DATABASE NAME>', 'Single user', true

DBCC checkdb('<DATABASE NAME>')

반응형

'MS-SQL' 카테고리의 다른 글

문자열로 구성된 고유 시퀸스 코드 만들 때  (0) 2015.07.28
[오류] 운영 체제 오류 5(액세스가 거부되었습니다.)  (0) 2015.07.28
내장함수  (0) 2015.07.28
세로를 가로로 출력하기  (0) 2015.07.28
누계 샘플  (0) 2015.07.28

댓글