다음의 쿼리문은 SQL Server에 현재 연결된 세션의 호스트의 이름(컴퓨터명)과 네트워크 카드(랜카드)의 맥어드레스를 알수 있다.
SELECT hostname, net_address
FROM sys.sysprocesses
WHERE spid = @@spid;
그런데 노트북과 같은 랜카드가 2개인 경우 sysprocesses 시스템뷰를 통한 net_address가 정확하지 않다.
현재 연결 중인 랜카드가 아닌 2개의 랜카드 중 하나가 계속 조회된다.
무선랜을 끄고 유선 랜으로 연결하든지 유선랜을 끄고 무선랜으로 연결하든지 무선랜 카드의 맥어드레스를 리턴한다.
참고로 Iphlpapi.dll 이용하면 현재 컴퓨터의 모든 랜카드 정보를 배열로 가져올 수 있는데 첫번째 배열에 무선랜 카드가 할당된다.
아마도 이것이 이유일 수 있을 것이라고 추측해본다.
또한 어떤 호스트는 컴퓨터 부팅시마다 net_address 값이 변경된다. 마치 KT 기가와이파이가 컴퓨터 부팅시하다 외부IP가
변경되는 것과 비슷하게 net_address가 변경된다.
결국 시스템뷰 sys.sysprocesses 가 정확하지 않다는 결론에 도달한다.
'SQL Server' 카테고리의 다른 글
월의 첫날, 월의 말일, 년의 첫날, 년의 말일, 문자열 일(DD)이 없는 달은 말일구하기 (0) | 2017.12.05 |
---|---|
ORDER BY 없이 현재 보이는 순서대로 ROW_NUMBER() 구하기 (0) | 2017.11.30 |
저장 프로시저내 에러 디버깅용 테이블 및 ERROR_MESSAGE() 저장 (0) | 2017.03.08 |
엔터값 ( 캐리지리턴, 라인피드) 있는 자료만 찾기 (0) | 2017.02.11 |
SSMS "스트립트 생성" 마법사로 테이블 자료 이동 (0) | 2016.11.03 |