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 가 정확하지 않다는 결론에 도달한다.