안녕하십니까?
MSSQL 특정 계정의 쿼리 실행 내역을 조회할 수 있을까요?
예를 들어 "dev01" 계정의 1개월(또는 1년)간의 insert, update, delete 쿼리 수행 목록과 쿼리 내용을 조회
fn_dblog()를 사용하여 트랜잭션 로그에서 목록은 추출 가능하였지만, 내용은 조회하지 못하네요
자문을 요청드립니다.
해당 질문의 문제를 해결, 도움이 되는 선택된 답변이 있습니다.
작성된 다른 답변도 확인해 보시기 바랍니다..
6개의 답변이 있습니다.
sys.dm_exec_query_stats 테이블을 활용 하시면 가능 합니다.
아래 예시 활용해보시기 바랍니다.
SELECT Db_name(st.dbid) DBName,
Object_schema_name(objectid, st.dbid) SchemaName,
Object_name(objectid, st.dbid) SPName,
qs.total_elapsed_time,
creation_time,
last_execution_time,
text
FROM sys.dm_exec_query_stats qs
CROSS apply sys.Dm_exec_sql_text(qs.plan_handle)st
JOIN sys.dm_exec_cached_plans cp
ON qs.plan_handle = cp.plan_handle
감사기능으로 확인이 가능한데 회원님들이 답글을 잘 주셨네요~
jjpapa | 약 일 년 전
회원님들이 답글을 잘 주셔서 감사하지요
저는 인프라 담당이라서 DB는 잘 모릅니다. 개발팀 고민 사항을 이 곳에 한번 여쭤보게 된 겁니다. 저도 도움이 될 수 있으면 좋겠네요
감사 로그 설정으로 조회해 보거나...
감사 로그로 얻기 어려운 내용이라면 DB 접근 제어와 같은 솔루션을 이용해야 하지 않을까 싶어 보이네요.
jjpapa | 약 일 년 전
검토중이지만, 사용자들이 원하는 방향이 아니라서요 ^^
실제 업무에서 사용자들의 소소한 DB갱신을 처리하는 부분이 믾다보니
접근제어툴을 이용하면 이러한 실무적인 처리가 힘들어질 것을 우려하고 있습니다.
의견 감사합니다.
덕분에 저도 하나 배우고 갑니다.
아래 링크 글을 보면 mssql audit (감사설정) 기능에 대해서 자세히 나와 있습니다.
audit 기능을 설정하는 것은 얼마든지 가능한데,
그만큼 audit 에 대한 log 가 많이 쌓이는 만큼 필요할때만 사용하거나,
데이터 저장 공간의 관리를 좀 더 운영자가 신경써서 해 주셔야 합니다.
Database 는 상당히 많은 변경이 발생하기 때문에 짧은 기간에도
많은 데이터가 쌓이는게 보통이거든요....
https://m.blog.naver.com/lama20/222003553861
jjpapa | 약 일 년 전
상세한 정보 공유 감사합니다. 꼭 참고하도록 하겠습니다.
늘푸른자스민 | 12달 전
정보 감사합니다~
MSSQL 에 감사로그 설정 기능이 있습니다.
Create server audit 과 Create database audit specfication 감사 사양을 설정하신뒤,
DDL , DML 등의 로그 저장이 가능 합니다.
다만, 로그를 자체 스토리지에 저장 하게 되므로, 저장공간 설정을 잘 하는것도 중요하며,
필터 설정을 잘해서, 불필요한 로그가 쌓이지 않게 세팅하는것도 중요합니다.
안그러면 로그가 어마어마하게 쌓이고... 로그파일 용량도 금방 꽉 차게 됩니다.
그리고 MSSQL 버전마다 사용자를 식별하는 필드값이 차이가 있습니다.
최소한 MSSQL 2019 이상의 버전을 사용해야 질문하신분의 요구에 맞는 내용으로 로깅이 가능할겁니다. 그 이하 버전에서는 사용자를 식별하기가 좀 어렵더라구요..
아마 내부회계 관리 때문에 준비하시는것으로 생각이 드는데.... 잘 활용하면
DB접근제어 시스템구축 비용 절감을 할수도 있겠습니다.
jjpapa | 약 일 년 전
상세한 답변 감사합니다.
말씀대로 회계감사와 관련해서 많이 귀찮은 일이 생기네요
우선 MSSQL 업그레이드가 선행되어야 할 것 같습니다.
다시한번 감사드립니다.
낭만생선 | 약 일 년 전
감사 때문이라면.. 결과적으로 접근제어 시스템을 적용해야 할 가능성이 높습니다. ㅜㅜ