2009년 8월 25일 화요일

[MSSQL] 전역변수를 알아보자

mssql에서 T-SQL을 사용할때 mssql의 현재 정보가 필요할때가 있습니다. 버전 정보라든지 현재 lock에 걸려있는 유저 정보라던지 아니면 중첩 트랜젝션중에 현재 트랜잭션이 몇번 중첩 되어 있는가 라던지 등등등...

 

이럴때 간단하게 현재 SQL SERVER 의 정보를 알 수 있게 해주는 아이들이 있습니다

 

이름하여,,,,, [전역 변수] 이죠..^^

 

오늘은 이 전역 변수들중에 제가 자주 쓰는 아이들의 소개와 나머지 전역 변수들 중에는 어떤것을이 있는지에 대해서 알아 보겠습니다.

 

1. @@ERROR (사용자 접속에대해 시스템이 발생시킨 마지막 에러 번호 )

 

먼저 @@ERROR 입니다. SQL 로 프로그래밍 할때 예외 처리는 기본이겠죠. 그렇게에러가 났을때 에러 정보를 담고있는 아이 입니다. 저에게 있어서 빈도 순위로는 1위 인거 같네요...^^

 

2. @@TRANSCOUNT ( 현재 사용자에의해 활성화된 트랜젝션의 중첩 수 )

 

긴 쿼리문을 작성할때 중첩된 트랜잭션으로 작성할때 요긴하게 사용됩니다.

begin tran 명령으로 1씩 증가하고,

commit 명령으로 1씩 감소하고,

rollback 명령으로 0이 되어버립니다.(전체 롤백이죠)

 

3. @@SPID ( 현재 프로세스의 서버 프로세스 ID )

 

서버에 돌고있는프로세서 ID를 보여줍니다. 데드락 현상이나 지연등의 현상이 발생했을때 가끔 들어가서 확인해 보는게 좋죠.

 

4. @@VERSION ( SQL서버의 날짜와 버젼번호 )

 

가끔 서버의 버전정보가 필요합니다. 정확한 정보를 알고 싶을때 이 쿼리를 날려보시면 이 전역변수를 통해 알아보시면 됩니다.

그리고 MS내부적인 버전 정보를 알고 싶으시다면

 

@@MICROSOFTVERSION ( 내부적으로 사용중인 서버의 버전 ) 으로 알아보시면 됩니다.

 

5. @@FETCH_STATUS ( 커서 FETCH명령의 상태 )

 

현재 커서의 FETCH가 어떤 상태인가를 사용하는 전역변수 입니다. 커서를 사용할때는 가끔 유용하게 사용되죠.

 

6. @@ROWCOUNT ( 현재 쿼리문에 의해 영향받은 행의 개수 )

 

이건 제대로된 테이블에서는 불필요한 전역변수일것입니다. 가끔 주키설정이 없는 테이블에 완벽하게 같은 데이터가 들어가 있을때 바로 이 전역변수 값을 변경함으로써 중복데이터중 원하는 레코드만 삭제하는 것이 가능해지죠. 막막할때 사용하면 쵝오입니다. ^^

 

7. @@DBTS ( 데이타베이스의 현재 timestamp자료형의 값 )

 

레코드 변경이 취득시첨과 틀린가를 물어볼때 사용되는 timestamp 값의 자료형을알아보는 전역변수 입니다.

거의 신경쓰고 작업하는 일은 없지만 열어보면 신기한 형태입니다..^^

 

이상이 제가 자주사용하는 MSSQL 에서의 전역 변수 였습니다. 그리고 그 밖에도 여러가지 정보를 담고 있는 전역변수들이 있는데 밑에 나열 하도록 하겠습니다.

 

@@CONNECTIONS           SQL서버가 시작된 후 로그인 시도를 한 횟수
@@CPU_BUSY                 SQL서버가 시작된 후 서버가 사용한 CPU시간
@@CURSOR_ROWS          현재 열린커서의 행의 개수
@@IDENTITY                    현재 IDENTITY값
@@IDLE                           SQL서버가 시작된 후의 IDLE time
@@IO_BUSY                     SQL서버가 입출력 작업에 사용한 시간
@@LANGID                      현재 사용되는 언어의 ID
@@LANGUAGE                 현재 사용되는 언어
@@MAX_CONNECTIONS    동시에 SQL서버에 접속할 수 있는 연결최대치
@@MAX_PRECISION         decimal, numeric자료형의 정밀도

@@NESTLEVEL                현재 실행중인 트리거의 중첩레벨

@@OPTIONS                    질의 처리 SET 옵션의 현재 값    
@@PACK_RECEIVED         SQL서버가 시작된 후 받은 패킷의 수
@@PACK_SENT                SQL서버가 시작된 후 보낸 패킷의 수
@@PACKET_ERRORS        SQL서버가 시작된 후 주고 받은 패킷의 오류 수
@@PROCID                      실행중인 저장 프로시져의 ID

@@SERVERNAME            서버의 이름
@@SERVICENAME           서비스의 이름
@@SPID                          현재 프로세스의 프로세스 ID
@@TEXTSIZE                   SELECT가 돌려준 데이터의 바이트수
@@TIMETICKS                 틱 당 마이크로 초수
@@TOTAL_ERRORS          SQL서버가 시작된 후 읽기와 쓰기 오류 수
@@TOTAL_READ              SQL서버가 시작된 후 디스크 검색의 횟수
@@TOTAL_WRITE             SQL서버가 시작된 후 디스크 수정의 횟수

 

이상으로 MSSQL(SQL SERVER) 에서 사용되는 전역변수 모음 이였습니다.

그럼 대한민국 개발자 여려분 홧팅하세요

댓글 없음:

댓글 쓰기