예전에 작성했던 서버 리붓 쿼리
예전에 네이버블로그에 올렸던 글인데 티스토리로 옮겨왔네요.
본인의 회사는 mssql 테이블에 회사 서버의 상태가 기록됩니다.
이 기록을 바탕으로 해당 서버를 리붓시켜주는 간단한 쿼리문을 만들어 봤습니다.
쿼리문 주제에 무슨 소스공개냐 라고 하실지 모르겠지만 그래도 공유-_-정신에 입각해서 올려봅니다.
DECLARE dead_server CURSOR FAST_FORWARD
FOR
SELECT ip FROM 상태테이블
where 리붓시킬서버들
open dead_server
declare @v_ip varchar(15)
declare @cmd1 varchar(255)
declare @cmd2 varchar(255)
fetch next from dead_server INTO @v_ip
while @@fetch_status = 0
begin
set @cmd1 = 'net use \\' + @v_ip + ' /user:계정 비번'
set @cmd2 =' tsshutdn 2 /REBOOT /DELAY:2 /server:' + @v_ip
exec master..xp_cmdshell @cmd1
exec master..xp_cmdshell @cmd2
fetch next from dead_server INTO @v_ip
end
CLOSE dead_server
DEALLOCATE dead_server
GO
간단히 설명하자면 커서를 이용해 해당 ip를 받아온 뒤에
커맨드 명령어중 net use와 tsshutdn을 통해 서버를 리붓시키는것입니다.
계정 비번은 같은걸 쓸 경우에는 걍 위에처럼 적어줬고 계정 비번 정보가 틀릴 경우에는 것도 커서에 넣어주면 되겠지요 ^^;;
요점은 net use 명령어를 통해 해당 서버의 터미널에 연결한 후 tsshutdn명령어를 통해 리붓을 한다는거죠....
문제는 이놈이 xp_cmdshell을 통해 작동하기 때문에 보안상 매우 취약하다는점이죠.'DATABASE' 카테고리의 다른 글
| 저장 프로시저와 Sch-M 잠금모드 (0) | 2008/11/28 |
|---|---|
| DB 페이징시 부하 줄이기 (0) | 2008/10/22 |
| 예전에 작성했던 서버 리붓 쿼리 (0) | 2008/04/24 |
| MSSQL 저장 프로시져 호출 시 주의사항 하나 (0) | 2008/03/26 |
| MSSQL 2008에서 추가되는 새로운 날짜/시간 자료형 (0) | 2008/03/12 |
| MSSQL 에이전트에서 특정 쿼리를 실행하는 작업 찾기 (0) | 2008/03/04 |


Leave a comment !