database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
ㆍSybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Sybase Q&A 1346 게시물 읽기
No. 1346
세션 kill
작성자
초보
작성일
2005-10-28 11:18
조회수
7,551

세션을 kill할때 클라이언트의 IP와 port를 이용하여 세션 ID를 찾아서 kill 할 수 있나요.?

가능하다면 ASE, ASIQ 나눠서 방법을 좀 알려 주세요..

초보라서 어떤 정보를 어떻게 보는 잘 모릅니다. 고수님들의 조언 부탁드립니다..

이 글에 대한 댓글이 총 2건 있습니다.

ASE에서는 sp_who라는 명령으로

사용자의 프로세스를 확인 할 수 있습니다.

해당하는 사용자의 프로세스를 어떻게 구별하느냐가 문제이지요.

프로세스가 running중이라면 running 중인 것 중에서 찾으면 됩니다.

sp_lock을 이용하여 lock을 잡고 있는 프로세스를 확인 할 수도 있습니다.

 

사용자의 IP와 Port를 이용해서 세션ID를 찾는다는 것은 불가능합니다.

사용자가 ASE에 연결되어 있다면,

select @@spid를 이용해여 프로세스 번호를 알 수 있을 텐데 말이죠.

 

몇가지 팁을 드리자면,

Application을 개발하여 사용하는 경우 Application에서 DB 연결시 프로그램명을 구분할 수 있도록 명칭을 주도록 하는 것이 좋습니다.

 

select * from master..sysprocesses를 하시면

program_name 으로 확인할 수 있습니다.

 

또한 Windows 플랫폼을 사용하는 사용자의 컴퓨터이름을 구분이 되도록 관리하는 것입니다.

그러면 sp_who에서 hostname이 컴퓨터이름으로 나타나게 되지요.

 

세션을 죽이는 방법은 sa_role을 가진 계정(대부분 sa)의 사용자가

kill @spid 하시면 됩니다.

 

 Syntax Help
------------------------------------------------------------- 
 Transact-SQL                                                                  
 kill - Kills a process.                                                       
   kill spid                                                                   

 

IQ에서는 DBA가 sp_iqconnection 명령으로 사용자IP를 찾을 수 있습니다.

NodeAddr 항목에서 사용자 IP를 확인하셔서 ConnHandle 번호의 해당 세션을 cancel 요청하시면 됩니다.

 

명령은

drop connection @ConnHandle

입니다.

 

IQ에서는 해당 세션이 많은 자원을 이용하여 진행중이었다면, 해당 자원을 다시 서버에 반환하거나 rollback 수행으로 인해 세션이 끊어지는데 시간이 오래 걸리는 경우가 있습니다. drop connection으로 취소요청을 한 후에 sp_iqconnection으로 확인해 보면 여전히 나타나는 경우가 그런 경우입니다. 이러한 경우에는 시간이 오래 걸리더라도 기다리시거나, 사용자가 없거나 서버를 재 시작해도 무방한 경우에는 IQ 서버를 다시 시작해 주시면 됩니다.

 

사용자의 세션을 강제로 끊는 것은 함부로 하면 안됩니다.

DBA나 담당자라 하더라도 세션을 강제로 끊음으로서 발생하는

장애나 피해에 대해서는 자신이 책임을 져야할 만큼

중요한 사항이 될 수 있습니다.

 

또한 DBA는 sa등의 관리자 계정에 대한 패스워드를 함부로 유출시킴으로써 예상하지 못할 문제를 방조하게 되는 일이 없도록

패스워드 관리와 보안에 항상 신경을 써야 합니다.

존넘님이 2005-10-28 15:08에 작성한 댓글입니다. Edit

ASE에서도 가능 합니다.

 

버젼이 12.5.1인가 이후 부터(정확치 않음, 원래 되던가?)

 

master..sysprocesses 에 ipaddr이라는 항목이 있어서

 

clinet의 ip를 알수가 있습니다.

 

아님 sp_client_addr이라는 procedure를 호출 해도 되고요..

 

수고하세요

지연님이 2005-10-28 21:34에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1349sybase ansi 버전
김충관
2005-11-01
3274
1348[질문]외부에서 sybase 접속하여 데이터 가져오기 [1]
구제웅
2005-10-31
4043
1347declare local temporary table index 오류 [3]
답답해
2005-10-28
3659
1346세션 kill [2]
초보
2005-10-28
7551
1345for xml 사용시 한글문제
김지수
2005-10-26
3173
1344insert시 seq 중복 에러.. [2]
김기택
2005-10-26
4731
1343오라클의 pro*c 처럼... [1]
새내기
2005-10-20
4110
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다