▧ 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 |
댓글