各位,SQL在插入数据的时候怎样获取电脑的IP地址?

解决方案 »

  1.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetClientIP]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[GetClientIP]
    GO
    /********************************************************
    功能:获取当前客户端IP地址
    ********************************************************/
    /*调用过程:
    exec GetClientIP
    */
    Create Procedure GetClientIP
    as
    declare @ip varchar(20)
    declare @hst varchar(20)
    declare @sql varchar(100)
    declare @str varchar(100)
    set @str='PING '+Host_Name() + ' -n 1'
    create table #tmp(aa varchar(200))
    insert #tmp exec master..xp_cmdshell @str
    select top 1 @ip = replace(left(aa,charindex(':',aa)-1),'Reply from ','') 
    from #tmp where aa like 'reply from %:%'
    drop table #tmp
    select @ip
    return (0)
    Go 
    EXEC GetClientIP
      

  2.   

    还是前台程序调用API的好
      

  3.   

    为什么不用程序获取IP呢,非要用SQL,这样不是太好吧!
      

  4.   

    提醒使用上述语句需要检查配置。
    /*--查看配置
    RECONFIGURE;
    EXEC sp_configure;
    */
    /*--修改配置
    EXEC sp_configure 'xp_cmdshell', '1';
    RECONFIGURE
    */