클라이언트에서 별도로 api를 사용할 필요가 없이, ms-sql에서는 맥어드레스가 걍 바로 나오는군요.
sysprocesses테이블에 net_Address가 그것입니다.
select * from master.dbo.sysprocesses해보면
net_Address란 컬럼이 리턴되는데
그게 맥어드레스입니다.
물론 리턴되는 값은 사이사이에 하이픈이 없이
00130288FFB7
요런 형식으로 리턴됩니다.
걍 디비단에서 중복로그인을 체크하려면 이렇게 하시면 됩니다.
전체 코드는 여기에 있습니다.
sysprocesses테이블에 net_Address가 그것입니다.
select * from master.dbo.sysprocesses해보면
net_Address란 컬럼이 리턴되는데
그게 맥어드레스입니다.
물론 리턴되는 값은 사이사이에 하이픈이 없이
00130288FFB7
요런 형식으로 리턴됩니다.
걍 디비단에서 중복로그인을 체크하려면 이렇게 하시면 됩니다.
1 select @netAddress=net_address
2 from master.dbo.sysprocesses
3 where spid=@@spid
4
5 if exists(select *
6 from master.dbo.sysdatabases d
7 inner join master.dbo.sysprocesses p on d.dbid=p.dbid
8 inner join dbo.users u on p.net_Address=u.macAddress
9 where d.name=db_name()
10 and p.net_address<>@netAddress
11 and u.userID=@userID) begin
12 raiserror('이미 다른 곳에서 접속중인 아이디입니다.', 16, 1)
13 return
14 end
전체 코드는 여기에 있습니다.



덧글