当前位置: 代码迷 >> PB >> 怎么取得PB客户端的机器名和IP,救
  详细解决方案

怎么取得PB客户端的机器名和IP,救

热度:183   发布时间:2016-04-29 09:13:52.0
如何取得PB客户端的机器名和IP,救急
请教大虾,如何取得PB客户端的机器名和IP,可以在SQL2005后台的“活动监视器”中看到连接数据库进程的机器名和IP,救急,请指教。

------解决方案--------------------
在服务器获取吗?

你是要获取连接到sql数据库的客户端的机器名和IP吗?


------解决方案--------------------
通过以下存储过程,可以获取IP和机器名
SQL code
create  proc  p_getlinkinfo  @dbname  sysname=null,                        --要查询的数据库名,默认查询所有数据库的连接信息  @includeip  bit=0                                    --是否显示IP地址,因为查询IP地址比较费时,所以增加此控制  as  declare  @dbid  int  set  @dbid=db_id(@dbname)  create  table  #tb(id  int  identity(1,1),dbname  sysname,hostname  nchar(128),loginname  nchar(128),net_address  nchar(12),net_ip  nvarchar(15),prog_name  nchar(128))  insert  into  #tb(hostname,dbname,net_address,loginname,prog_name)  select  distinct  hostname,db_name(dbid),net_address,loginame,program_name  from  master..sysprocesses             where  hostname<>''  and  (@dbid  is  null  or  [email protected])  if  @includeip=0  goto  lb_show    --如果不显示IP地址,就直接显示  declare  @sql  varchar(500),@hostname  nchar(128),@id  int  create  table  #ip(hostname  nchar(128),a  varchar(200))  declare  tb  cursor  local  for  select  distinct  hostname  from  #tb  open  tb  fetch  next  from  tb  into  @hostname  while  @@fetch_status=0  begin             set  @sql='ping  [email protected]+'  -a  -n  1  -l  1'             insert  #ip(a)  exec  master..xp_cmdshell  @sql             update  #ip  set  [email protected]  where  hostname  is  null             fetch  next  from  tb  into  @hostname  end  update  #tb  set  net_ip=left(a,patindex('%:%',a)-1)  from  #tb  a  inner  join  (  select  hostname,a=substring(a,patindex('Ping statistics for %:%',a)+20,20)  from  #ip             where  a  like  'Ping statistics for %:%')  b  on  a.hostname=b.hostname  lb_show:  select  id,数据库名=dbname,客户机名=hostname,用户名=loginname             ,网卡物理地址=net_address,IP地址=net_ip,应用程序名称=prog_name  from  #tb  go
  相关解决方案