안녕하세요. ^^*
실제 운영하고 있는 DB에 접속할 수 있는 PC가 따로 있습니다.
그 PC에서 SSMS를 통해 실행된 쿼리만 체크하고 싶습니다.
이걸 위해서 DB접근제어 솔루션을 사자니 너무 비용이 많이 들고요.
간단히 이런경우는 프로파일러에 필터 걸어서 로그를 추적하면 되지 않을까? 막연한 생각인데요.
프로파일러로 이벤트 추적하는 것이 운영DB 성능을 떨어뜨린다는 막연한 불안감이 있네요. 아직 해본적이 없어서... 운영쪽에는
질문은요. 아래와 같아요~
1) 프로파일러를 운영 DB에 사용하는 경우 성능이 많이 저하되나여?
2) 많이 성능이 저하된다면 다른 모니터링 툴을 구매해야할까요?
3) 특정 pc들에서 실행되는 쿼리만 모니터링 하고 싶은데요. 어떻게 하면 좋을까요?
답변~ 부탁드립니다~
Comment 6
-
더따뜻한
2015.03.24 16:33
댓글 감사합니다 ^^*
한줄한줄 곱씹고 공부해야겠어요. ^^
-
minsouk
2015.03.24 11:38
2008 이상이라면 extended events 가 짱입니다. 원샷 쓰리킬 입니다. ~ ^^
2012 이상이라면 이보다 좋은툴은 없다고 봐요~
제가 보기엔 DBA 하려면 전공 필수로 보입니다. 쿨럭~
-
더따뜻한
2015.03.24 15:27
두분 답변 감사합니다~
http://extendedeventmanager.codeplex.com/
요 사이트에 들어가서 다운받아서 실행은 해봤는데요. SSMS를 실행하면 첨부한 파일같은 에러가 뜹니다.
저는 SQL SERVER 2008 사용중입니다.~ 이런 에러는 뭐까요? ㅠㅠ
-
minsouk
2015.03.24 22:27
그냥 쿼리로 하세요~ 저 메니저 깔아봐야 아무 도움이 안됩니다.
-
더따뜻한
2015.03.25 08:30
ㅇㅒ기주신게 쿼리로 하는거였나여? ^^
ㅋㅋ 음~ 그럼~ 더 찾아보겠음다~
프로파일러 잘 못 써서 CPU가 최선을 다 하는 상황이 가끔 연출되기는 하지만
적절한 이벤트 선택과 필터링이면 크게 문제되지는 않을겁니다.
게다가 꼭 필요해서 하는 거라면 위험은 감수해야죠.
좀 덜 바쁜 시간에 걸어보고 영향을 평가해보는게 좋겠네요.
특정 PC에서 실행되는 쿼리만 모니터링 하고 싶다면 HostName에 필터를 걸면 되는데
Connection String을 어떻게 구성했느냐에 따라 달라집니다.
Connection String에 WSID나 Workstation ID를 픽스시켜 놓으면 HostName으로 필터링이 안됩니다.
다른 모니터링 툴이라고 하면 Profiler를 이용하는게 아니라면 패킷스니핑 방식으로 동작하는게 있는데 비싸요.
2008이라면 프로파일러 말고 Extended Event를 사용해도 됩니다. 프로파일러보다 훨씬 가볍다고 하더군요.