출처 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0EcVH&articleno=12875487
SQL Server 2000 에서 Database가 Suspect 되었을때 대처 방법입니다..
아직 적용은 안해봤는데.. 내일 적용을 해볼라고 합니다.. 왜냐.. 현재 관리하는 서버중 한대가 문제가 발생을 하였기 때문이죠..
쿼리 작성합니다..
-- 1. 먼저 시스템 카탈로그를 수정 할 수 있게 해 줍니다.
Use master
Go
Sp_configure 'allow
update', 1
Reconfigure with override
Go
-- 2. 해당 DB를 응급 모드(32768 = emergency mode)로 변경 합니다.
update sysdatabases set status=32768 where name = 'db_name'
-- ex) update sysdatabases set
status=32768 where name = 'TestDB'
-- 3. SQL 서비스를
재시작 합니다.
-- 서비스 재시작 작업시 서비스 중지 후 시작 전에 기존 LDF 파일을 리네임 또는 Copy하여 반듯이 Backup
-- 4. 로그 파일 재 생성
dbcc rebuild_log ('db_name' , 'ldf 파일의 물리적 경로')
-- ex) dbcc rebuild_log ('TestDB'
, 'D:\MSSQL\DATA\testdb_log.ldf')
-- 이
상태 까지 진행을 하게 되면 DB의 Ldf 파일이 초기화
되면서 DB는 DBO만 사용상태로 활성화 됩니다. 그러면 이제 DB를 보통 모드로 바꾸는 작업을 합니다.
-- 5. DB의 상태를 먼저 확인 합니다.
Select * From sysdatabases
-- 이때 아까 복구한 DB의 상태가 '2048 = dbo use only' 상태로 되어 있을 것 입니다.
-- 6. 복구한 DB의 모드를 '기본모드 = 0' 변경 합니다.
update sysdatabases set status=0 where name = 'db_name'
-- ex) update sysdatabases set status=0 where name = 'TestDB'
-- 7. EM을
재연결 하면 DB의 상태가 보통으로 변경 됨을 확인 할 수 있습니다.
-- 8. 이제 DB를 다시 먼저 시스템 카탈로그를 수정 할 수 없게 변경해 줍니다.
Use master
Go
Sp_configure ‘allow update’, 0
Reconfigure with override
Go
-- 여기까지 진행이 되었으면 이제는 DB 일관성 검사를 진행 하여 잘 못된 부분이 없는지
확인 합니다.
-- 9. DBCC Checkdb
-- 일관성
오류가 있는지 검사 합니다.
-- 10. 일관성 오류를 수정하기 위해 user를 싱글 유저로 변경 합니다.
Alter Database TestDB Set single_user with rollback immediate
-- 11. 오류를
수정 합니다.
DBCC CheckDB('db_name', REPAIR_ALLOW_DATA_LOSS)
-- Ex) DBCC CheckDB ('TestDB' ,
REPAIR_ALLOW_DATA_LOSS)
-- 12. 오류를
수정 하였다면 다시 DBCC Checkdb 를 수행 합니다.
-- 13. 오류가
더 이상 없다면 user모드를 다시 변경 하여 줍니다.
User master
go
Alter Database TestDB Set multi_user
go
-- 작업 완료
'MS-SQL' 카테고리의 다른 글
원단위 절삭/반울림 (0) | 2014.07.23 |
---|---|
SQL서버 성능조절 (0) | 2014.07.08 |
SQL2008 디자인에서 컬럼변경 후 저장할 수 없을 때.. (0) | 2014.06.20 |
OPENROWSET 명령어가 되지 않을 때.. (0) | 2014.05.10 |
SQL2000 xp_cmdshell 사용하여 파일삭제 (0) | 2014.04.25 |