Windows DB

 시스템 혹은 DB를 관리할때..., 무한 반복적인 노가다를 해야할 경우가 생기는데...
만일 내가 관리해야하는 DB가 수백대라면.., 그리고 급히 같은 작업을 해야한다면...,
한때는 "SQL Manager Tool 방식으로..., DBMS 게이트웨이에 수백대 전부 접속해서., 1대씩 1대씩 쿼리를 날린다.."라고 생각할수 있습니다...

하지만 그게 꼭 나쁘단건 아니지만..,
oSQL이나 SQLCMD를 사용하여 게이트웨이 PC에서 간단히 작업이 끝납니다..

- SQLCMD(http://msdn.microsoft.com/ko-kr/library/ms162773.aspx)도 동일합니다.


C:UsersAdministrator>osql /?
 
Microsoft (R) SQL Server 명령줄 도구
버전 9.00.1399.06 NT INTEL X86
Copyright (C) Microsoft Corporation. All rights reserved.

참고: osql은 SQL Sever의 일부 기능을 지원하지 않습니다. SQL Server 2005
대신 sqlcmd를 사용하십시오. 자세한 내용은 SQL Server 온라인 설명서를 참조하십시오.
 
사용법: osql [-U 로그인 ID] [-P 암호]
[-S 서버] [-H 호스트 이름] [-E 트러스트된 연결]
[-d DB 이름 사용] [-l 로그인 제한 시간] [-t 쿼리 제한 시간]
[-h 머리글] [-s 열 구분 기호] [-w 열 너비]
[-a 패킷 크기] [-e 에코 입력] [-I 따옴표붙은 식별자 사용]
[-L 서버 목록 표시] [-c 명령 끝] [-D ODBC DSN 이름]
[-q "명령줄 쿼리"] [-Q "명령줄 쿼리" 후 끝내기]
[-n 번호 매기기 제거] [-m 오류 수준]
[-r 일반 오류 메시지] [-V 심각도]
[-i 입력 파일] [-o 출력 파일]
[-p 통계 인쇄] [-b 오류 시 일괄 처리 중단]
[-X[1] 명령 비활성화 [그리고 경고로 종료]]
[-O 이전 ISQL 동작 사용 시 다음 사항 비활성화]
<EOF> 일괄 처리
콘솔 너비 자동 조정
와이드 메시지
기본 오류 수준은 -1이거나 1
[-? 구문 요약 표시]

C:UsersAdministrator>



대략적인 기능은 위와 같습니다..
그럼 기능을 사용하여..,
start osql /S DBMS DB name -U sa -P sa password
start osql use DB name
start osql dbcc shrinkfile (DB_Log, 0.9)
start osql backup log DB name with truncate_only
start osql dbcc shrinkdatabase(DB name, truncateonly)
start osql go


이와 같은 배치 파일(auto shrinking.bat)을 작성하고 작업스케줄러를 통해 bat를 특정시간 반복을 한다면..,
LDF 가 무제한 증가 되지 않도록 설정하여..., 시스템 리소스를 차지하는것보단..,
효율적이라고 생각되는군요...
(테스트 환경 : Windows 2008 R2, MS SQL 2005)