rt

解决方案 »

  1.   

    这个似乎不行吧?要么用xp_cmdshell运行网络命令尝试一下
      

  2.   

    /*
    功能:根据传入的参数计算机名,获取对应的IP地址
    日期:2006-08-07
    */CREATE PROCEDURE dbo.P根据计算机名获取IP
    (
    @ComputerName  varchar(100)
    )
    AS
    set xact_abort on begin create table #ip(id  int  identity(1,1),re varchar(2000))   declare @s varchar(1000)  
    set @s = 'ping  ' + @ComputerName + ' -a -n 1 -l 1' --注意,这里的相关参数必须是小写!!!
    insert  #ip(re)  exec  master..xp_cmdshell @s   select 机器名 = host_name(),IP地址 = stuff(left(re,charindex(']',re)-1),1,charindex('[',re),'')  
    from #ip
    where id = 2 drop table  #ip end
    GO
      

  3.   

    谢谢楼上,但是现在是我需要在触发器里查找终端名,也就是说,是没有输入参数的.我以前记得好象可以在MASTER数据库的一个系统表里看到终端用户名,但是忘记了
      

  4.   

    HOST_NAME
    返回工作站名称。语法
    HOST_NAME ( )返回类型
    nchar注释
    当该参数对系统函数可选时,则系统采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟圆括号。系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。示例
    下面的示例创建一个表,该表在 DEFAULT 定义中使用 HOST_NAME() 来记录那些向记录订单的表中插入行的计算机工作站名称。CREATE TABLE Orders
       (OrderID     INT        PRIMARY KEY,
        CustomerID  NCHAR(5)   REFERENCES Customers(CustomerID),
        Workstation NCHAR(30)  NOT NULL DEFAULT HOST_NAME(),
        OrderDate   DATETIME   NOT NULL,
        ShipDate    DATETIME   NULL,
        ShipperID   INT        NULL REFERENCES Shippers(ShipperID))
      

  5.   

    http://www.simpsoft.cn/dispbbs.asp?boardid=21&id=147
      

  6.   

    使用SQL肯定是无法获得客户端的HostName的
    执行xp_cmdshell只会在服务器端执行的其他高级一点的语言实现这个功能都很难啊,SQL就别想了
      

  7.   

    多谢wangtiecheng(不知不为过,不学就是错!),解决了