안녕하세요.
저희 고객사 DB가 MSSQL 여러가지 버전을 사용하고 있는데
테이블에 테이타가 추가, 수정, 삭제 될때 기록을 남기려고 합니다.
그래서 보편적인 방법으로는 트리거를 사용할까도 해보았으나....
고객사들이 express를 사용하는 곳도 있어 백업테이블에 로그를 남기는게 DB Size에 문제가 있어
다른 방법이 있을까 하여 유저분들에 의견을 듣고자 합니다.
모든 의견 거침없이 받고자 하니 한수 부탁드리겠읍니다.
감사합니다.
Comment 5
-
건우아빠
2013.05.22 16:36
-
소리
2013.05.22 17:53
건우아빠님 답변 감사합니다.
저 또한 그 방법을 생각하지 않은건 아닙니다.
제가 알고 있기로 express 버전은 DB당 2G(2000), 4G(2005) 로 알고 있는데...
고객사들이 병원이다 보니 하루당 발생하는 데이타량이 만만치가 않습니다.
그래서 년도별 DB를 생성해서 트리거를 사용할까도 생각 했었는데...
이 방법 외에 DB가 아닌 파일방식이라던가 그 어떤 다른것들이 있나 해서요...
-
건우아빠
2013.05.22 20:20
2008 은 10G 를 지원 합니다...
별도의 백업디비를 만드시고 트리거를 하셔도 용량에는 크게 문제는 없지 않을가 봅니다..
파일로 내리는 방법은 bcp를 이용하시면 되는데 이건 수정이나 삭제시는 어렵고
생각하시는 방법으로 구축을 하신 다음 bcp로 수정삭제히스토리테이블을 매일 배치 작업으로 내려받으시고
수정삭제히스토리테이블을 지우는 방법도 있을듯 합니다.
배치작업은 원도우 작업스케줄러를 이용해서 매입 자동으로 실행해서 저장하게 하시는방법도 있습니다.
-
맨즈밤
2013.05.23 09:32
건우아빠님이 말씀하신것과 거의 동일한데요.. 히스토리 테이블에 우선 저장후 , 아래 쿼리로 로그 텍스트로 내려받은 다음 히스토리
삭제하는 방법은 어떨런지요.
DECLARE @strCommand AS VARCHAR(8000) -- 쿼리 실행 TXT 구문DECLARE @Query VARCHAR(3000)
SET @strCommand = 'BCP "' + @Query + '" queryout ' + @FileName + ' -T -c -t\┃ -r \n'
EXEC master..xp_cmdshell @strCommand
-
소리
2013.05.27 16:45
건우 아빠님 그리고 맨즈밤님 답변 감사합니다....
목적이 수정 삭제등이 발생 했을때 수정 삭제전 정보를 봐야 한다면
트리거를 이용하셔서 BACKUP테이블을 같이 이용하셔야 할듯 합니다.
express 를 사용하시다면 DB 사이즈는 데이타베이스당이므로 별도의 BACKUP용 디비로 트리거가 발생하게 하시면 됩니다.