검색결과 리스트
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1. 테스트 데이터베이스 생성
IFDB_ID('PageTest')ISNOTNULL
DROPDATABASE PageTest
GO
CREATEDATABASE PageTest
GO
2. 테스트 테이블 생성
USE PageTest
GO
CREATETABLE T1 (
SEQ INTPRIMARYKEYIDENTITY,
COL1 VARCHAR(2000)
)
GO
INSERTINTO T1 VALUES(REPLICATE('A', 2000))
INSERTINTO T1 VALUES(REPLICATE('B', 2000))
INSERTINTO T1 VALUES(REPLICATE('C', 2000))
INSERTINTO T1 VALUES(REPLICATE('D', 2000))
INSERTINTO T1 VALUES(REPLICATE('E', 2000))
INSERTINTO T1 VALUES(REPLICATE('F', 2000))
INSERTINTO T1 VALUES(REPLICATE('G', 2000))
INSERTINTO T1 VALUES(REPLICATE('H', 2000))
INSERTINTO T1 VALUES(REPLICATE('I', 2000))
INSERTINTO T1 VALUES(REPLICATE('J', 2000))
INSERTINTO T1 VALUES(REPLICATE('K', 2000))
INSERTINTO T1 VALUES(REPLICATE('L', 2000))
INSERTINTO T1 VALUES(REPLICATE('M', 2000))
INSERTINTO T1 VALUES(REPLICATE('N', 2000))
INSERTINTO T1 VALUES(REPLICATE('O', 2000))
INSERTINTO T1 VALUES(REPLICATE('P', 2000))
INSERTINTO T1 VALUES(REPLICATE('Q', 2000))
INSERTINTO T1 VALUES(REPLICATE('R', 2000))
INSERTINTO T1 VALUES(REPLICATE('S', 2000))
INSERTINTO T1 VALUES(REPLICATE('T', 2000))
INSERTINTO T1 VALUES(REPLICATE('U', 2000))
INSERTINTO T1 VALUES(REPLICATE('V', 2000))
INSERTINTO T1 VALUES(REPLICATE('W', 2000))
INSERTINTO T1 VALUES(REPLICATE('X', 2000))
INSERTINTO T1 VALUES(REPLICATE('Y', 2000))
INSERTINTO T1 VALUES(REPLICATE('Z', 2000))
GO
CHECKPOINT
GO
3. 페이지 확인
USE PageTest
GO
DBCC TRACEON(3604)
DBCC IND('PageTest','T1', 1)
결과
4. HEX EDITOR 에서 페이지를 손상시키기 위해서 페이지 확인
- 1:109 페이지를 손상시킨다.
DBCC PAGE('PageTest', 1, 109, 1)
결과
5. 전체 데이터베이스 백업
BACKUPDATABASE PageTest TODISK='D:\BACKUP\PageTest.BAK'
6. SQL 서버 중지
7. HEX EDITOR로 페이지 손상시킴
- 1:109 페이지
30000800 06000000 0200fc01 00df0746 를 손상시킨다.
8. SQL 서버 다시 시작
9. 데이터 확인
USE PageTest
GO
SELECTTOP 3 *FROM T1
SELECT*FROM T1
결과
10. 손상된 페이지 확인
USE msdb
SELECT * FROM msdb..suspect_pages
SELECT DB_NAME(11)
결과
11. 최근 로그까지 백업
USE master
GO
BACKUP LOG PageTest TODISK='D:\BACKUP\PageTest_LOG.BAK'
WITH NO_TRUNCATE,INIT
GO
12. 페이지 복원
RESTORE DATABASE PageTest PAGE ='1:109'
FROM DISK='D:\BACKUP\PageTest.BAK'
WITH NORECOVERY
GO
13. 페이지 복원 중에 데이터 확인
USE PageTest
GO
아래의 두 쿼리는 문제없이 잘된다.
SELECT * FROM sys.objects
SELECT TOP 3 * FROM T1
이 쿼리는 문제발생
SELECT * FROM T1
결과
14. 로그 복원
USE master
GO
RESTORE LOG PageTest
FROM DISK='D:\BACKUP\PageTest_LOG.BAK' WITH RECOVERY
GO
15. 확인
USE PageTest
GO
SELECT * FROM T1
결과
문제없이 잘 나온다.
출처 : http://www.volkit.com/490
IFDB_ID('PageTest')ISNOTNULL
DROPDATABASE PageTest
GO
CREATEDATABASE PageTest
GO
2. 테스트 테이블 생성
USE PageTest
GO
CREATETABLE T1 (
SEQ INTPRIMARYKEYIDENTITY,
COL1 VARCHAR(2000)
)
GO
INSERTINTO T1 VALUES(REPLICATE('A', 2000))
INSERTINTO T1 VALUES(REPLICATE('B', 2000))
INSERTINTO T1 VALUES(REPLICATE('C', 2000))
INSERTINTO T1 VALUES(REPLICATE('D', 2000))
INSERTINTO T1 VALUES(REPLICATE('E', 2000))
INSERTINTO T1 VALUES(REPLICATE('F', 2000))
INSERTINTO T1 VALUES(REPLICATE('G', 2000))
INSERTINTO T1 VALUES(REPLICATE('H', 2000))
INSERTINTO T1 VALUES(REPLICATE('I', 2000))
INSERTINTO T1 VALUES(REPLICATE('J', 2000))
INSERTINTO T1 VALUES(REPLICATE('K', 2000))
INSERTINTO T1 VALUES(REPLICATE('L', 2000))
INSERTINTO T1 VALUES(REPLICATE('M', 2000))
INSERTINTO T1 VALUES(REPLICATE('N', 2000))
INSERTINTO T1 VALUES(REPLICATE('O', 2000))
INSERTINTO T1 VALUES(REPLICATE('P', 2000))
INSERTINTO T1 VALUES(REPLICATE('Q', 2000))
INSERTINTO T1 VALUES(REPLICATE('R', 2000))
INSERTINTO T1 VALUES(REPLICATE('S', 2000))
INSERTINTO T1 VALUES(REPLICATE('T', 2000))
INSERTINTO T1 VALUES(REPLICATE('U', 2000))
INSERTINTO T1 VALUES(REPLICATE('V', 2000))
INSERTINTO T1 VALUES(REPLICATE('W', 2000))
INSERTINTO T1 VALUES(REPLICATE('X', 2000))
INSERTINTO T1 VALUES(REPLICATE('Y', 2000))
INSERTINTO T1 VALUES(REPLICATE('Z', 2000))
GO
CHECKPOINT
GO
3. 페이지 확인
USE PageTest
GO
DBCC TRACEON(3604)
DBCC IND('PageTest','T1', 1)
결과
4. HEX EDITOR 에서 페이지를 손상시키기 위해서 페이지 확인
- 1:109 페이지를 손상시킨다.
DBCC PAGE('PageTest', 1, 109, 1)
결과
5. 전체 데이터베이스 백업
BACKUPDATABASE PageTest TODISK='D:\BACKUP\PageTest.BAK'
6. SQL 서버 중지
7. HEX EDITOR로 페이지 손상시킴
- 1:109 페이지
30000800 06000000 0200fc01 00df0746 를 손상시킨다.
8. SQL 서버 다시 시작
9. 데이터 확인
USE PageTest
GO
SELECTTOP 3 *FROM T1
SELECT*FROM T1
결과
10. 손상된 페이지 확인
USE msdb
SELECT * FROM msdb..suspect_pages
SELECT DB_NAME(11)
결과
11. 최근 로그까지 백업
USE master
GO
BACKUP LOG PageTest TODISK='D:\BACKUP\PageTest_LOG.BAK'
WITH NO_TRUNCATE,INIT
GO
12. 페이지 복원
RESTORE DATABASE PageTest PAGE ='1:109'
FROM DISK='D:\BACKUP\PageTest.BAK'
WITH NORECOVERY
GO
13. 페이지 복원 중에 데이터 확인
USE PageTest
GO
아래의 두 쿼리는 문제없이 잘된다.
SELECT * FROM sys.objects
SELECT TOP 3 * FROM T1
이 쿼리는 문제발생
SELECT * FROM T1
결과
14. 로그 복원
USE master
GO
RESTORE LOG PageTest
FROM DISK='D:\BACKUP\PageTest_LOG.BAK' WITH RECOVERY
GO
15. 확인
USE PageTest
GO
SELECT * FROM T1
결과
문제없이 잘 나온다.
출처 : http://www.volkit.com/490
'-- MSSQL' 카테고리의 다른 글
WaitFor (0) | 2009.11.26 |
---|---|
TempDB에 대한 동시성 강화 (0) | 2009.11.23 |
MSSQL2005에서 대량데이터 Delete (0) | 2009.10.28 |
ldf파일이 깨져 mdf만으로 db를 복구할 때 (0) | 2009.10.19 |
각 테이블의 Identity 사용현황 조사쿼리 (0) | 2009.09.25 |
RECENT COMMENT