ASE에서 특정테이블에 대한 update를 누가 쳤는지 확인 할려고 하는데 어떻게 해야할지 잘 감이 안오네요...
테이블에 컬럼을 추가해서 update 구문에 자신의 정보를 넣는 방법....(select @@spid -> sp_client_addr)
아니면 dbcc traceon....
ase를 잘 몰라서... 고수님들 알려주세요....
프로그램 단에서 할려면 각각의 처리 루틴의 login정보, 사용자, ip, 시간,...등의 정보를 별도의 테이블에 업데이트 시켜도 되지만, 그러게 되면 최종적인것만 들어가게 되고 ,별도의 히스토리 테이블을 만들어서 각 insert, update,delete 시 입력하시면 수정 이력을 볼수 있을거구요. 디비에서 처리를 할거라면 트리거를 이용해서 각각의 정보를 업데이트하던 뱔도의 히스토리 테이블에 입력시키면 똑같은 효과를 내실수 있을것 같습니다.
말씀대로 trigger를 하나 생성해서 update 발생시 아래 구문을 실행하여 감시 테이블에 쌓으려는데요
insert into table_aduit_hist
select getdate(), spid, hostname, loggedindatetime, ipaddr from sysprocesses
where spid = (select @@spid)
실행된 sql문도 같이 집어 넣을수 있을까요?
dbcc sqltext로 가능하다면 어떻게 트리거 안에 삽입할수 있나요???
모르는게 투성이네요....
일단
update tri의 경우
deleted와 inserted라는 내부 테이블이 생깁니다.
deleted는 원본, inserted는 새로운 데이터입니다.
이걸 넣는게 sql문을 넣는 것보다는 나을것 같구요
굳이 넣으시려면
12.5.0.3부터 mda라는걸 활용하실수 있습니다
monSQLText에서 해당 spid의 명령을 가지고 와서 저장 하심 됩니다.~~
굳이 거기 까지 하실 필요가?
아님 tri에 spid와 시간 찍고요
log파일에 sql문 무조건 남기게 하시고, 필요하면 나중에 해당 시간과 spid로 로그파일에서 찾아 볼수도 있습니다.
아님 sybase의 audit 기능이 있긴한데...performance가 엄청 느려지죠...
또는 networking단에서 sniffer할수 있는 ribo를 sybase에서 제공합니다.
여기까지 돈 안내고 대략 사이베이스 기능으로 하는 거고요..
왠만하심 디비보안툴 사시는게 정신건강에 좋을듯 싶습니다.