日期:2014-05-18  浏览次数:20649 次

sql server如何获取客户端ip地址
在客户端对sql   server插入数据时,需要保持客户端的IP地址,请问,sql   server中是否有相关的函数,如何实现?

------解决方案--------------------
create proc GetIP
@ClientName varchar(100),
@IP varchar(20) output
as
declare @a varchar(100)

create table #(a varchar(8000))
set @a= 'ping '+@ClientName
insert into # exec master..xp_cmdshell @a
select @ip=substring(a,charindex( '[ ',a)+1,charindex( '] ',a)-charindex( '[ ',a)-1) from # where charindex( '[ ',a)> 0
drop table #

go
declare @ip varchar(20)
exec GetIP '客户机名 ',@ip output
select @ip
------解决方案--------------------
应该是前台做,客户端你只能获得访问数据库的机器ip,参考下面
http://community.csdn.net/Expert/topic/5681/5681306.xml?temp=.1505091
但如果是bs版的,不通过前台你就无法获得用户ip
------解决方案--------------------
貌似公网的话只用数据库在后台做不行的,我前几天正好在试,数据库自己只能记录MAC地址,如果需要知道IP地址,常用的办法就是调用master..xp_cmdshell ,意思是在cmd框里ping对方的机器名,但是如果公网的话是ping不出的,内网的话可以。所以一直没有找到解决办法。
------解决方案--------------------

給你看下,這個不是本人寫的


declare @computerName varchar(20),@ip varchar(20)
set @computerName=host_name()
create table ##(str varchar(100))
exec( 'insert ## exec master..xp_cmdshell ' 'ping '+@computerName+ ' ' ' ')
select @ip=stuff(str,1,charindex( '[ ',str), ' ')
from ##
where ltrim(str) like 'Pinging% '
select left(@ip,charindex( '] ',@ip)-1)
drop table ##


(13 row(s) affected)


--------------------
192.168.1.210

(1 row(s) affected)