MSSQL 접속자 확인 - MSSQL jeobsogja hwag-in


Database 현재 접속 사용자는?


안녕하세요.

고코더 입니다. 

MSSQL 접속자 확인 - MSSQL jeobsogja hwag-in

MSSQL을 사용하다보면 현재 데이터베이스에 몇명의 접속자가 연결되어 사용하고 있는지 확인하고 싶을때가 있습니다. 얼마나 많은 개발자들이 접속해서 작업을 하는지 어떤 사용자가 문제를 일으키는지 확인해봅시다.

 1. 아래에 SQL을 MSSQL에서 실행해보세요.

1

2

3

4

5

6

7

8

SELECT

    DB_NAME(dbid) as '데이터베이스',

    COUNT(dbid) as '현재 접속자 수'

FROM

    sysprocesses

WHERE

    dbid > 0

GROUP BY dbid ;

cs

MSSQL 접속자 확인 - MSSQL jeobsogja hwag-in
gocoder_sysprocesses.zip

 2. 쿼리 실행에 결과 화면 입니다.  DB에 해당 숫자만큼에 접속자가 발생하고 있습니다.


마무리


많이 접속해 있을수록 할일이 많은 데이터베이스

MSSQL 접속자IP및 접속일자 작업시간, DB별 접속자수 알아보기

 Published Date: 2014년 11월 14일

MS-SQL에서 접속자를 알아보는 방법이다.

DB별 접속자수 알아오기….

SELECT 

    DB_NAME(dbid) as DB이름, 

    COUNT(dbid) as 접속자수

FROM 

    sys.sysprocesses 

WHERE 

    dbid > 0 

GROUP BY 

    dbid ;

접속자 로그인 날짜 및 작업시간 및 아이피 확인

SELECT S.SPID, S.LOGINAME, S.LOGIN_TIME, S.LAST_BATCH, C.CLIENT_NET_ADDRESS 

FROM sys.sysprocesses S, sys.dm_exec_connections C 

WHERE S.spid = C.SESSION_ID;

관련

MSSQL 접속자 확인 - MSSQL jeobsogja hwag-in

  • Remove From My Forums

  • 질문

  • 1. SQL 접속 기록 관련하여 로그 파일 정보를 보는 방법

    2. IP나 접속시간은 보여지는지?

    궁금합니다~

모든 응답

  • 안녕하세요.

    질문의 목적이 이미 지나간 접속 정보에 대한 확인이라면... 로그인 실패만 확인이 가능합니다.

    SQL Server에서는 기본적으로 로그인 실패에 대한 로그만을 SQL Log에 기록합니다.

    만약 로그인 성공도 함께 기록하려면, 다음 옵션을 변경하고 SQL Server를 재시작하면 됩니다.

    SSMS에서 서버에서 오른쪽 버튼을 클릭 후 속성을 선택합니다.

    보안을 클릭한 후 로그인 감사에서 "실패한 로그인과 성공한 로그인 모두"를 선택합니다.

    확인 버튼을 클릭한 후 SQL Server 서비스를 재시작합니다. 

    SQL Log 확인은 다음 위치에서 확인 가능합니다.

    MSSQL 접속자 확인 - MSSQL jeobsogja hwag-in

    단, 로그인이 자주 일어난다면 SQL Log 파일에 너무 많은 내용이 기록되기 때문에, 일반적으로는 권하지는 않습니다.

    만약 감사 목적이라면 감사(Audit)을 설정하고 모든 로그인 기록보다는 특정 사용자(로그인)을 필터해서 기록하는 것을 권고 드립니다.

    현재 로그인한 사용자(로그인)의 정보를 확인하는 것이 목적이라면 다음 DMV를 조회해서 확인이 가능합니다.

    혹시 현재 로그인 사용자에 대한 검색을 원하는 것이라면 댓글을 남겨주세요. ^^

    답변이 도움이 되었으면 좋겠습니다.

    Younggun Kim

    MCDBA, MCITP
    Consultant @ Database Division in SQLRoad
    http://www.sqlroad.com  http://www.sqlserver.co.kr

  • 만약 감사 목적이라면 감사(Audit)을 설정하고 모든 로그인 기록보다는 특정 사용자(로그인)을 필터해서 기록하는 것을 권고 드립니다.

    이 부분에 대해서 한번더 질문 드리고 싶어요.

    어떤 프로그램을 통해서든, 해당 SQL 서버에 직접 ,원격접속을 하여 데이터를 처리하던간에

    누가 언제 어떤? 이라는 항목을 감사관리하고 싶거든요!

    IP , 접속 날짜 및 시간, 무슨 QUERY? 등을 알고싶은데 이런 옵션은 없을거같아요.

    말씀하신 특정사용자 필터하여 기록한다는 것이 트리거 설정을 하는 의미인가요? 

데이터베이스에 접속 중인 사용자의 정보를 가져오는 방법입니다. 해당 쿼리를 이용해 사용자들의
SPID, 접속자 이름, 로그인 시간, 마지막 쿼리 실행시간, 접속 IP, 접속 프로그램, 실행 중인 명령어를 조회할 수 있습니다.
그리고 SPID를 이용해서 추가적인 세부 정보도 조회가 가능합니다.

모든 사용자 세션 정보

SELECT S.spid,
       S.loginame as '접속자 이름',
       S.login_time as '로그인 시간',
       S.last_batch as '마지막 쿼리 실행시간',
       C.client_net_address  as '접속 IP' ,
          S.program_name as '접속 프로그램',
          S.cmd as '현재 실행중인 명령어'
FROM   sys.sysprocesses S,
       sys.dm_exec_connections C
WHERE  S.spid = C.session_id

실행중인 쿼리 자세히 확인

--SPID를 이용한 실행중인 쿼리 조회
DBCC INPUTBUFFER (454) -- ex) DBCC INPUTBUFFER (51)


실행중인 쿼리 cpu 부하율 확인

--SPID를 이용한 쿼리실행 유저 및 CPU 점유율 확인
exec sp_who2 454 -- sp_who2 를 실행하면 cpu 점유율 을 볼수있다 ex) exec sp_who2 51


이상으로 데이터베이스에 접속 중인 사용자들의 정보와 그 정보를 이용해서 사용한 쿼리 문과 CPU 사용률 등을
자세하게 보는 방법까지 알아보았습니다.