2008. 9. 17. 15:41

Shrinkfile & MDF 만 있을경우

## 자주 사용하는 쿼리문들... 기억력이 좋지 않아 여기라도 조금 끄적거려놔야지......##

* shrinkfile

-> SQL 2000
use master
backup log DB이름 with no_log

use DB이름
dbcc shrinkfile(DB이름_log,1)

==> 1Mbyte 로 LDF 파일 사이즈 축소


-> SQL 2005(백업은 반드시 1회 이상 해야합니다)

 DBCC SHRINKFILE (DB이름,1) WITH NO_INFOMSGS

==> 1Mbyte 로 LDF 파일 사이즈 축소


* MDF 파일만 있을경우(LDF 없을경우)

우선 간단한 방법부터
CREATE DATABASE DB명
ON (NAME='DB명', FILENAME='c:\aa.mdf')
FOR ATTACH_REBUILD_LOG
위 방법이 안될때는 조금 복잡한 아래 방법으로 합니다.


 -> 동일한 DB 명을 생성합니다.
 -> DB 중지후 MDF 파일을 덮어 쓰기 합니다.
 -> SQL 재시작 합니다.
 -> 시스템 카달로그 변경을 위해서 allow update 수정합니다.


   use master
   go
   sp_configure 'allow update', 1
   reconfigure with override
  go

    ->해당 DB 를 Emergency Mode(응급복구모드)로 변경합니다.

   ALTER DATABASE DB명 SET EMERGENCY
     ->SQL 서비스 다시 시작합니다.
     
     ->트랜젝션로그를 다시 생성합니다.
   ALTER DATABASE dbname REBUILD LOG ON
   (NAME=logname, FILENAME='LDF파일경로\logname.ldf')

-> 일반모드 변경후 카달로그 수정할수 있도록 원상복귀
   ALTER DATABASE DB명 SET ONLINE

   use master
   go
   sp_configure 'allow update', 0
   reconfigure with override
   go