MS-SQL은 오라클과는 다르게 MDF, LDF 파일만 백업 해도 복구가 된다.

물론 확실한지 나는 잘 모르겠다. 담당 엔지니어가 그리 말했으니 ;;

그리하여 만들게 된 Bat file, 내용은 간단하다 새벽에 ms-sql 및 ms-sql agent 서비스를 정지 시키고

mdf, ldf 파일을 os copy 한 후 5일이 지난 파일은 삭제 그리고 ms-sql 및 agent 서비스 시작~

단순 무식하게 새벽에 서비스 시작, 정지, 복사, 삭제 4개의 배치 파일을 만들어 Windows 예약된 스케쥴에 추가! 끝 ㅋㅋ

sql_stop.bat

net stop sqlserveragent
net stop mssqlserver

sql_start.bat
net start sqlserveragent
net start mssqlserver

del.bat
forfiles.exe /p d:backup /s /m "*.mdf" /d -5 /c "cmd /c del @file"
forfiles.exe /p d:backup /s /m "*.ldf" /d -5 /c "cmd /c del @file"

start.bat
md D:\backup\"%date%"
copy C:\data\*.* D:\backup\"%date%"


* 참고

FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]
설명:
    파일(또는 파일 집합)을 선택하고 파일에 명령을 실행합니다. 일괄 작업에 유용합니다.
매개 변수 목록:
    /P    pathname      검색을 시작할 경로를 지정합니다.
                        현재 작업 디렉터리(.)가 기본 폴더입니다.
    /M    searchmask    검색 마스크에 따라 파일을 검색합니다.
                        '*'이 기본 검색 마스크입니다.
    /S                  하위 폴더를 포함하도록 지정합니다. 예, "DIR /S"
    /C    command       각 파일에 실행할 명령을 지정합니다.
                        명령 문자열을 큰따옴표로 묶어야 합니다.
                        "cmd /c echo @file"이 기본 명령입니다.
                        명령 문자열에 다음 변수를 사용할 수 있습니다.
                        @file    - 파일 이름을 반환합니다.
                        @fname   - 확장명 없이 파일 이름을 반환합니다.
                        @ext     - 파일의 확장명만 반환합니다.
                        @path    - 파일의 전체 경로를 반환합니다.
                        @relpath - 파일의 상대 경로를 반환합니다.
                        @isdir   - 파일 형식이 디렉터리인 경우 "TRUE"를 반환하고 파일인 경우 "FALSE"를 반환합니다.
                        @fsize   - 파일의 크기(바이트)를 반환합니다.
                        @fdate   - 파일을 마지막으로 수정한 날짜를 반환합니다.
                        @ftime   - 파일을 마지막으로 수정한 시간을 반환합니다.
                        명령줄에 특수 문자를 포함하려면 0xHH 형식의 16진수 코드(예, 탭은 0x09)를 사용하십시오.
                        내부 CMD.exe 명령 앞에는 "cmd /c"를 사용해야 합니다.
    /D    date          지정한 날짜와 마지막 수정한 날짜가 늦거나 같은(+) 또는 빠르거나 같은(-) 파일을 찾습니다.
                        날짜 형식은 "yyyy-MM-dd"입니다.
                        또한 마지막 수정한 날짜가 현재 날짜에 "dd"일을 더한 날짜보다 늦거나 같은(+)
                         또는 현재 날짜에서 "dd"일을 뺀 날짜보다 작거나 같은(-) 파일을 찾습니다.
                        유효한 "dd" 범위는 0에서 32768까지입니다.
                        부호를 지정하지 않으면 "+"가 기본값입니다.
    /?                  도움말을 표시합니다.

예:
    FORFILES /?
    FORFILES
    FORFILES /P C:\WINDOWS /S /M DNS*.*
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C:\ /S /M *.bat
    FORFILES /D -30 /M *.exe /C "cmd /c echo @path 0x09 was changed 30 days ago"
    FORFILES /D 2001-01-01 /C "cmd /c echo @fname is new since Jan 1st 2001"
    FORFILES /D +2008-1-10 /C "cmd /c echo @fname is new today"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize"
    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"


forfiles는 Windows 2003에서는 기본적으로 사용 가능하나 XP 및 2000 에서는 추가해야 한다.
forfiles.exe 파일을 다운 받아 System32 폴더에 위치 시키거나 path 지정 해주면 될듯.

'IT > ETC' 카테고리의 다른 글

amazon fire tv 정보  (0) 2014.12.17
Event ID 7026 — Basic Service Control Manager Operations  (1) 2008.12.10
ipTIME G504 MIMO  (1) 2007.11.16
데이터베이스 관리  (0) 2007.09.30
DBA 가이드  (0) 2007.09.29

+ Recent posts