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)