Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
[질문]MSSQL 2000 의 Log 분석 방법...
누가 잘 못 건들여서 중요한 정보를 바꿨나봐요.
그래서 대량 불량이 발생해서.. 거기에 대한 책임을 따지기 위해..
누가 수정 했는지를 알수 있늘까요?
Log분석하면 혹시 어떤 컴에서 접속해서 변경했는지 알수 있나 해서요..
고친 날짜는 알겠는데.. 어떤 컴에서.. 아님 IP로 어떤 ID로 접속해서 고쳤는지를 알아야 하는데..
도통 방법이 없네요.. 쩝..
방법이 있으면 좀 알려 주세요.. 부탁드립니다.
2
COMMENTS
phono
•
2010.02.26 05:42
MS-SQL서버의 로그라는게 한게가 있어서.., 추적하긴 힘들겁니다.
거기다 대부분 MS-SQL서버에 접속하는 클라이언트 유저를 1개의 단일사용자로 해놓고, 클라이언트쪽 프로그램에서는
이사람 저사람 접근하니까요.
차라리 뭐 가칭 LOGT 같은 테이블을 하나 만들어 놓고,
예를 들어 이렇게..
<!--CodeS-->
DROP TABLE ERCM_LOGT;
CREATE TABLE ERCM_LOGT
(
LOGT_NO NUMERIC(14) IDENTITY(1,1), /* LOG ID */
LOGT_UNO VARCHAR(1) NOT NULL, /* 사용처 번호 (*주6) R-ERCM_UINFO */
LOGT_MODINFO1 VARCHAR(20) DEFAULT '', /* 모듈정보 - 메인모듈 */
LOGT_MODINFO2 VARCHAR(40) DEFAULT '', /* 모듈벙보 - 폼명 */
LOGT_USERINFO1 VARCHAR(40) DEFAULT '', /* 사용자 정보 사용자명, ID */
LOGT_USERINFO2 VARCHAR(100) DEFAULT '', /* 사용자 정보 PC명 맥주소, IP주소 */
LOGT_DOC VARCHAR(100) DEFAULT '', /* 처리내역 */
LOGT_TIME VARCHAR(30) DEFAULT '', /* 기록시간 */
);
-------------------------------------
// IN:EXE명(확장자제외), 폼명, 사용처코드, 사용자ID, PW, 내용
procedure WRITE_LOG(APP_NAME, FORM_NAME, UNO, USER_ID, USER_PW, MEMO: string); // 사용자별 고의조작 또는 실수조작 규명을 위한 로그를 남긴다
var
qryTMP: TADOQuery;
time_stamp, mac_addr, ip_addr, client_name, user_name: string;
begin
time_stamp := '['+FormatDateTime('YYYY-MM-DD, HH:NN:SS:ZZZ', Now)+']';
//-----
Screen.Cursor := crSQLWait;
qryTMP := nil;
qryTMP := TADOQuery.Create(Application);
try
qryTMP.Connection := ADO_CONNECTION;
qryTMP.CursorType := ctStatic;
with qryTMP do // 사용자 로긴
begin
if(Active) then Close;
SQL.Clear;
SQL.Text :=
' SELECT * '+#13+
' FROM ERCM_UPERM '+#13+
' WHERE UPERM_UNO = '''+ UNO +''' '+#13+
' AND UPERM_ID = '''+ USER_ID +''' '+#13+
' AND UPERM_PW = '''+ USER_PW +''' '+#13;
Open;
mac_addr := FieldByName('UPERM_LOG_MAC').AsString;
ip_addr := FieldByName('UPERM_LOG_IP').AsString;
client_name := FieldByName('UPERM_LOG_CLIENT').AsString;
user_name := FieldByName('UPERM_UNAME').AsString;
//-----
if(Active) then Close;
SQL.Clear;
SQL.Text :=
' INSERT INTO ERCM_LOGT ( '+#13+
' LOGT_UNO, '+#13+
' LOGT_MODINFO1, '+#13+
' LOGT_MODINFO2, '+#13+
' LOGT_USERINFO1, '+#13+
' LOGT_USERINFO2, '+#13+
' LOGT_DOC, '+#13+
' LOGT_TIME) VALUES ( '+#13+
' '''+ UNO +''', '+#13+
' '''+ APP_NAME +''', '+#13+
' '''+ FORM_NAME +''', '+#13+
' '''+ user_name +', '+ USER_ID +''', '+#13+
' '''+ client_name +', '+ mac_addr +', '+ ip_addr +''', '+#13+
' '''+ MEMO +''', '+#13+
' '''+ time_stamp +''') '+#13;
ExecSQL;
end;
finally
if(qryTMP <> nil) then qryTMP.Free;
end;
Screen.Cursor := crDefault;
end;
<!--CodeE-->
문제가 될만한 데이터에 접근하는 프로그램의 모듈에 이러한 프로시져를 삽입해 놓는 것이죠.
어쩌면 가장원시적인 방법일지 모르지만, 1개의 SQL서버 유저만 만들어놓고 운영할 시에는 사용해 볼만 합니다. ^^
0
0
삭제
수정
댓글
박준영
•
2010.02.26 18:18
답변 감사합니다. 한번 고려해 봐야 겠네요.. ㅋㅋ
그럼 수고 하세요~~!!
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
박경환
•
2010.03.10 09:47
2
COMMENTS
/
0
LIKES
[질문] 델파이 5, 콤포넌트 설치 좀 해주실 분?
델초
•
2010.03.12 02:04
공지사항에 "원격 디버깅 서비스를 실시 합니다." 라는 내용이 있습니다. 실제로 운영되는지는 모르...
땅콩맨
•
2010.03.17 09:35
경환님 설치가 다 되셨는지 궁금하네요... ^^
바람의아빠
•
2010.03.09 04:07
2
COMMENTS
/
0
LIKES
아웃룩 관련 질문올립니다..
phono
•
2010.03.10 06:11
주소록 wab 파일 제어와 관련한 소스는 좀 돌아나니는 걸로 알고 있습니다. wab 라는 검색어로 검색을...
땅콩맨
•
2010.03.17 09:47
저도 잠깐 자료를 찾아보았지만 검색이 안되는군요. 좀 시간을두고 찾아보거나 관련자료가 안나오면 유...
서선영
2010.03.08 20:37
0
COMMENTS
/
0
LIKES
델파이 7 에서 엑세스 파일 연결 ㅠㅠ
양용민
•
2010.03.09 01:57
3
COMMENTS
/
0
LIKES
[re] 델파이 7 에서 엑세스 파일 연결 ㅠㅠ
서선영
•
2010.03.11 01:49
"모두" 탭에서 입력하여 연결 했습니다^^ 도움 감사합니다^^
땅콩맨
•
2010.03.22 10:45
다른방법으로는 Jet OLEDB:System database = mdw 파일 경로를 넣어주는 방법이 있습니다. mdw파일은 ...
김태진
•
2010.11.24 23:25
저도 궁금하던 내용인데 답글 달아주신분들 감사합니다.
조덕희
•
2010.03.07 21:46
2
COMMENTS
/
0
LIKES
Tool palette에 관한 초보질문입니다.
최용일
•
2010.03.10 22:09
델파이 옵션의 Palette페이지에서 옮기시면 됩니다. 언인스톨도 마찬가지로 옵션에서...
땅콩맨
•
2010.03.22 10:47
컴포넌트 팔렛트의 Properties에 들어가셔서 옮기려는 컴포넌트에 드래그&드랍을 하셔서 옮기는 방법도 ...
lee, js
•
2010.03.06 00:49
1
COMMENTS
/
0
LIKES
active x 사용 시 - "사용 가능한 저장소가 부족하여 이 작업을 마칠 수 없습니다" 라는 메세지가 뭔가요?
땅콩맨
•
2010.03.22 10:52
active-x 컴포넌트의 이름이 길경우 그럴수도 있다는데 컴포넌트 이름의 길이를 좀 줄여보시는게 어떠실지?
lee, js
•
2010.03.05 06:45
3
COMMENTS
/
0
LIKES
SAPFunctions 컴포넌트는 어디서 구할 수 있나요??
오병주
•
2010.03.05 20:17
메일로 답변드렸어요 수고하세요..^^ 건승하세요
초보임당
•
2010.03.16 22:59
SAP 버전마다 틀린걸로 알고 있는데요... SAP설치하면 OCX 가 포함되어 있던데요..
땅콩맨
•
2010.03.22 11:00
탐크루즈님, 나중에 기회되면 저도 보내주시길 부탁르여용~^^
lee, js
•
2010.03.05 02:24
3
COMMENTS
/
0
LIKES
[질문]혹시요, 델파이로 입력한 데이터 SAP로 넘길 수 있나요?
엄마미안
•
2010.03.05 19:28
예전에 SAP동호회에서 다른 랭귀지로 만들어서 SAP로 데이터를 넘긴다는 글을 본적 있는거 같습니다. 여...
엄마미안
•
2010.03.05 19:35
오래된 자료같지만 여길 보시고요. https://forums.sdn.sap.com/message.jspa?messageID=350879 삽...
초보임당
•
2010.03.16 22:57
가능 합니다. 역시 SAP RFC FUNCTION 쓰시면 되는데 ..당연하겠지만 SAP 쪽은 BAPI 개발자가 같이 개발...
이용벽
•
2010.03.04 21:20
2
COMMENTS
/
0
LIKES
[질문] 'Table Level Changed' Error(내용 추가)
백록화
•
2010.03.04 22:45
데이터베이스의 종류와 특정 쿼리문을...
이용벽
•
2010.03.05 00:52
이런 저런 시도 끝에 답을 얻었습니다. COMMENT field 가 MEMO type이었는데 이를 C type로 바꾸니까 에...
이강석
•
2010.03.04 05:11
2
COMMENTS
/
0
LIKES
비트맵 파일을 AVI나 다른 영상으로 변환이 가능할까요?
이규하
•
2010.03.04 18:19
델파이 안에서 하실께 아니라면 .. 윈도우 무비 메이커를 써보시지요 ... 그림 주욱 붙여서 ... AVI ...
박상윤
•
2010.03.08 23:09
AVI 관련 라이브러리 사용하면 프로그램에 직접 가능 합니다. 단 모든 이미지 크기가 (가로세로)같아야...
이현영
•
2010.03.03 21:49
1
COMMENTS
/
0
LIKES
vb에서 DLL 정이를 델파이로 변환
최용일
•
2010.03.04 08:51
function vdmtAuthenticate(Encode_Service_Name: PChar; Encode_App_Name: PChar): Boolean; stdcall...
홍길동
2010.03.02 06:43
0
COMMENTS
/
0
LIKES
델파이 프리즘에 대해서.
오선진
•
2010.02.26 19:10
5
COMMENTS
/
0
LIKES
함수 인자에서 var가 뜻하는 바??
박철수
•
2010.02.26 19:36
var는 아마 function AA내부에서 weight변수의 내용을 읽기만 하는 것이 아니라 쓸수도 있는 걸로 알고 ...
홍성락
•
2010.02.26 19:36
함수 인자중 var선언은 in/out을 하겠다는건데요(값을 넘겨주고 또, 받을수 있다는겁니다), 그래서 사용...
소나기
•
2010.02.26 19:42
위 함수는 아마도 weight 라는 변수가 이미 선언되어 있고 함수를 수행한 후에 그 결과가 var 변수에 ...
phono
•
2010.02.26 19:57
var 로 선언된 argument는 Call By Reference로 처리 하겠다고 컴파일러에게 선언해주는 것 입니다. ...
오선진
•
2010.02.26 21:28
답변감사합니다. 위 델파이 DLL의 함수를 C++에서 사용하려고 하는데, 세번째 인자 [var weight:i...
cdrd
•
2010.02.26 03:09
2
COMMENTS
/
0
LIKES
[질문] 윈도우7에서 2010설치
최용일
•
2010.03.03 11:50
뭐든 별 상관없습니다. 델파이2010은 32비트컴파일러입니다. 64비트 윈도우7에서 컴파일한다고 해도 32...
cdrd
•
2010.03.11 19:42
최용일님 감사합니다.
박준영
•
2010.02.26 02:56
2
COMMENTS
/
0
LIKES
[질문]MSSQL 2000 의 Log 분석 방법...
누가 잘 못 건들여서 중요한 정보를 바꿨나봐요. 그래서 대량 불량이 발생해서.. 거기에 대한 책임을 따지기 위해.. 누가 수정 했는지를 알수 있늘까요? Log분석하면 혹시 어떤 컴에서 접속해서 변경했는지 알수 있나 해서요.. 고친 날짜...
phono
•
2010.02.26 05:42
MS-SQL서버의 로그라는게 한게가 있어서.., 추적하긴 힘들겁니다. 거기다 대부분 MS-SQL서버에 접속...
박준영
•
2010.02.26 18:18
답변 감사합니다. 한번 고려해 봐야 겠네요.. ㅋㅋ 그럼 수고 하세요~~!!
del초보
•
2010.02.25 04:12
1
COMMENTS
/
0
LIKES
VB에서 사용한 DLL를 델파이에서 사용하고 싶습니다.
최용일
•
2010.02.26 06:26
VB에서 LONG은 64비트정수입니다. 델파이에서 Int64형과 호환되죠. procedure UniDecoder(var pSrc: I...
오선진
•
2010.02.25 03:28
2
COMMENTS
/
0
LIKES
초보질문이에요..
최용일
•
2010.02.26 06:29
쩝~ 세번째 파라매터가 무엇을 뜻하는지는 함수 만든 사람외에는 알 수 없습니다. 함수만드신 분에게 물...
오선진
•
2010.02.26 19:08
질문이 잘못 됐군요.. 세번째 파라미터가 var weight:int64 로 선언되어 있는데, var가 뜻하는 바를 모...
임대순
•
2010.02.25 03:11
1
COMMENTS
/
0
LIKES
핸드스캐너로 바코드를 읽어들일때 자동줄바꿈
임대순
•
2010.02.26 18:45
자답입니다. 휴..해결했네요..그냥 하드코딩으로 스캐너에서 다시 한번 입력하게 끔 만들어 줄을 자동...
오인흥
•
2010.02.24 08:18
1
COMMENTS
/
0
LIKES
퀀텀 cxGrid에서 filtering 사용시 해당그리드에나온데이타를
치꼬
•
2010.02.24 22:25
DevExpress 게시판에 답변 올려
김경표
•
2010.02.23 23:58
1
COMMENTS
/
0
LIKES
콜백함수입니다... 문제를모르겠어요... ㅠ.ㅠ
최용일
•
2010.02.26 05:59
콜백은 자신이 아니라 호출한 함수내에서 실행시켜주는것입니다. 위의 예를 보면 JavaParsingDLL.dll에 ...
박준영
2010/02/26 02:56
Views
1263
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
거기다 대부분 MS-SQL서버에 접속하는 클라이언트 유저를 1개의 단일사용자로 해놓고, 클라이언트쪽 프로그램에서는
이사람 저사람 접근하니까요.
차라리 뭐 가칭 LOGT 같은 테이블을 하나 만들어 놓고,
예를 들어 이렇게..
<!--CodeS-->
DROP TABLE ERCM_LOGT;
CREATE TABLE ERCM_LOGT
(
LOGT_NO NUMERIC(14) IDENTITY(1,1), /* LOG ID */
LOGT_UNO VARCHAR(1) NOT NULL, /* 사용처 번호 (*주6) R-ERCM_UINFO */
LOGT_MODINFO1 VARCHAR(20) DEFAULT '', /* 모듈정보 - 메인모듈 */
LOGT_MODINFO2 VARCHAR(40) DEFAULT '', /* 모듈벙보 - 폼명 */
LOGT_USERINFO1 VARCHAR(40) DEFAULT '', /* 사용자 정보 사용자명, ID */
LOGT_USERINFO2 VARCHAR(100) DEFAULT '', /* 사용자 정보 PC명 맥주소, IP주소 */
LOGT_DOC VARCHAR(100) DEFAULT '', /* 처리내역 */
LOGT_TIME VARCHAR(30) DEFAULT '', /* 기록시간 */
);
-------------------------------------
// IN:EXE명(확장자제외), 폼명, 사용처코드, 사용자ID, PW, 내용
procedure WRITE_LOG(APP_NAME, FORM_NAME, UNO, USER_ID, USER_PW, MEMO: string); // 사용자별 고의조작 또는 실수조작 규명을 위한 로그를 남긴다
var
qryTMP: TADOQuery;
time_stamp, mac_addr, ip_addr, client_name, user_name: string;
begin
time_stamp := '['+FormatDateTime('YYYY-MM-DD, HH:NN:SS:ZZZ', Now)+']';
//-----
Screen.Cursor := crSQLWait;
qryTMP := nil;
qryTMP := TADOQuery.Create(Application);
try
qryTMP.Connection := ADO_CONNECTION;
qryTMP.CursorType := ctStatic;
with qryTMP do // 사용자 로긴
begin
if(Active) then Close;
SQL.Clear;
SQL.Text :=
' SELECT * '+#13+
' FROM ERCM_UPERM '+#13+
' WHERE UPERM_UNO = '''+ UNO +''' '+#13+
' AND UPERM_ID = '''+ USER_ID +''' '+#13+
' AND UPERM_PW = '''+ USER_PW +''' '+#13;
Open;
mac_addr := FieldByName('UPERM_LOG_MAC').AsString;
ip_addr := FieldByName('UPERM_LOG_IP').AsString;
client_name := FieldByName('UPERM_LOG_CLIENT').AsString;
user_name := FieldByName('UPERM_UNAME').AsString;
//-----
if(Active) then Close;
SQL.Clear;
SQL.Text :=
' INSERT INTO ERCM_LOGT ( '+#13+
' LOGT_UNO, '+#13+
' LOGT_MODINFO1, '+#13+
' LOGT_MODINFO2, '+#13+
' LOGT_USERINFO1, '+#13+
' LOGT_USERINFO2, '+#13+
' LOGT_DOC, '+#13+
' LOGT_TIME) VALUES ( '+#13+
' '''+ UNO +''', '+#13+
' '''+ APP_NAME +''', '+#13+
' '''+ FORM_NAME +''', '+#13+
' '''+ user_name +', '+ USER_ID +''', '+#13+
' '''+ client_name +', '+ mac_addr +', '+ ip_addr +''', '+#13+
' '''+ MEMO +''', '+#13+
' '''+ time_stamp +''') '+#13;
ExecSQL;
end;
finally
if(qryTMP <> nil) then qryTMP.Free;
end;
Screen.Cursor := crDefault;
end;
<!--CodeE-->
문제가 될만한 데이터에 접근하는 프로그램의 모듈에 이러한 프로시져를 삽입해 놓는 것이죠.
어쩌면 가장원시적인 방법일지 모르지만, 1개의 SQL서버 유저만 만들어놓고 운영할 시에는 사용해 볼만 합니다. ^^