출처 : http://www.devpia.com

[상황]
1:00 FULL BACKUP완료.
2:00 INSERT TABLE1 VALUES("데이터A")
3:00 INSERT TABLE1 VALUES("데이터B")
4:00 DELETE TABLE1 -- 실수로 데이터를 지움


위의 상황에서 데이터B까지 전부복구하기를 원한다. 하지만, 데이터A와 데이터B는 백업을 해놓지 않아
1:00 FULL BACKUP파일을 복구하여도 데이터A,데이터B는 복구할 수 없다.
그렇다면, 어떻게 데이터를 살릴수 있는 가 ?
1. 로그백업을 수행한다. -- 로그파일에는 4:00까지 모든 작업들이 기록되어 있다.

2. 로그백업한 것을 stopat옵션을 사용하여 특정한 시간을 기준으로 복구한다.
-- 왜냐하면 로그백업한 내용에는 insert작업도 있지만, delete작업도 있다. 따라서, 3:00까지만
데이터를 복구해야만 데이터A,데이터B가 복구된다.


-- stopat을 사용한 T - SQL 참조 --

restore database testdb from testdbback
with norecovery -- 회복프로세서를 시작하지 않는다.
restore log testdb from testdbback
with recovery, stopat ="jan 01,2000 3:00 am"
-- 3:00까지의 데이터를 복구하고,with recovery로 회복프로세서를 시작한다.


-- 주의 사항 --
모든 백업의 시작은 fullbackup이다. 한 번의 fullbackup도 없다면, 로그백업을 하더라도 복구할 수가 없
다. 그리고, 로그가 생성되지 않는 옵션을 설정해 놓았다면, 로그가 없으므로 로그백업은 무의미하다.
2005/06/15 13:48 2005/06/15 13:48
Query Analyzer 를 이용한 데이터 추출 시 256 문자가 넘는 필드 값이 잘려 나오는 경우가 발생할 때
다음과 같이 옵션을 바꾸어 줌으로써 해결할 수 있습니다.

Query Analyzer 를 실행 시킨 후 도구 -> 옵션 -> 결과 탭 에서 "열 당 최대 문자 수" 값을 기본 256에서 원하는 값으로 바꿉니다.
2005/06/15 13:40 2005/06/15 13:40
http://www.aspkorea.org

SQL 2000 부터는 트랜잭션 로그를 지우는 명령어가 없다.

트랜잭션 로그는 어떤 작업을 수행하고 있을 때, 만일 그 작업이 중간에 중단된 경우 프로그램은 자동으로 데이터를 원점으로 되돌리기 위해 사용되는 특수한 로그이다. 예를 들어, 데이터의 인덱스를 새로 매기는 등의 작업을 수행할 때, 중간에 컴퓨터의 전원이 꺼졌다면 데이터는 부팅 이후 원점으로 복귀된다. 이러한 기능을 트랜잭션 로그가 수행하는 것이다.

그런데, 트랜잭션 로그는 또한 쓸 데 없이 자리를 차지하는 경우도 많다. 따라서, 주기적으로 로그를 삭제해 주어야 할 필요가 있다. 또한, 방대한 데이터베이스에서 작업을 수행할 경우 한 번 늘어난 데이터베이스 파일, 특히 로그파일이 줄어들지 않고 용량을 잠식하는 경우가 있다. 이러한 때 다음 명령어를 사용하여 로그를 줄인다.

먼저, 트랜잭션 로그를 삭제하는 명령어이다.

BACKUP LOG [데이터베이스명] WITH TRUNCATE_ONLY

트랜잭션 로그 등은 백업 명령어로 자동으로 삭제된다. 이 때 백업을 실제 수행하지 않고 로그만을 지우라는 명령어이다.

그러나, 로그의 증가로 인해 파일 자체의 용량이 커졌을 수 있다. 이 때 다음 명령어를 수행하여 파일 자체의 용량을 줄여 준다.

DBCC SHRINKFILE(데이터베이스명_LOG, 1)
--> 로그를 1MB로 줄이라는 명령어이다.

또한, 데이터베이에서 많은 내용을 지워 덜어낸 경우, DB에 할당된 파일의 크기가 실제 사용량보다 커진 경우가 있다 이럴 때는 다음과 같이 용량을 줄여 준다.

DBCC SHRINKFILE(데이터베이스명_DATA, 최종 크기)

그러나, 데이터베이스나 로그가 항상 일정 크기 이상을 사용할 경우, 무턱대고 용량을 줄이는 것은 성능상의 문제를 야기할 수도 있다. 특히 로그의 경우 순차적으로 액세스를 하기 때문에 저장 공간의 조각으로 인한 피해를 볼 수 있다.
2005/06/15 13:39 2005/06/15 13:39