不太想在前台处理,应为我们这的系统的客户端是由不同厂家开发,想简化他们的开发,最好能在SQL server中直接处理,这样避免客户端程序出现问题。

解决方案 »

  1.   

    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
      

  2.   

    应该是前台做,客户端你只能获得访问数据库的机器ip,参考下面
    http://community.csdn.net/Expert/topic/5681/5681306.xml?temp=.1505091
    但如果是bs版的,不通过前台你就无法获得用户ip
      

  3.   

    貌似公网的话只用数据库在后台做不行的,我前几天正好在试,数据库自己只能记录MAC地址,如果需要知道IP地址,常用的办法就是调用master..xp_cmdshell ,意思是在cmd框里ping对方的机器名,但是如果公网的话是ping不出的,内网的话可以。所以一直没有找到解决办法。
      

  4.   

    VBS 写个ping功能的脚本;试试
      

  5.   


    給你看下,這個不是本人寫的
    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)
      

  6.   

    对,客户端如果通过路由再连的服务器的话,服务器ping客户端是不通的,所以master..xp_cmdshell 命令根本不管用,我也弄了好久,到现在也没解决这个问题。