SQL Server
sys.sysprocesses 시스템뷰 의 net_address(맥어드레스) 부정확함
미스터몽키
2017. 3. 18. 01:02
다음의 쿼리문은 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 가 정확하지 않다는 결론에 도달한다.