select * from sysprocesses---------------------------------------sysprocesses
  新增信息 - SQL Server 2000 SP3。sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。这些进程可以是客户端进程或系统进程。sysprocesses 只存储在 master 数据库中。列名 数据类型 描述 
spid smallint SQL Server 进程 ID。 
kpid smallint Microsoft Windows NT 4.0® 线程 ID。 
blocked smallint 分块进程的进程 ID (spid)。 
waittype binary(2) 保留。 
waittime int 当前等待时间(以毫秒为单位)。当进程不处于等待时,为 0。 
lastwaittype nchar(32) 表示上次或当前等待类型名称的字符串。 
waitresource nchar(32) 锁资源的文本化表示法。 
dbid smallint 当前正由进程使用的数据库 ID。 
uid smallint 执行命令的用户 ID。 
cpu int 进程的累计 CPU 时间。无论 SET STATISTICS TIME ON 选项是 ON 还是 OFF,都为所有进程更新该条目。 
physical_io int 进程的累计磁盘读取和写入。 
memusage int 当前分配给该进程的过程高速缓存中的页数。一个负数,表示进程正在释放由另一个进程分配的内存。 
login_time datetime 客户端进程登录到服务器的时间。对于系统进程,是存储 SQL Server 启动发生的时间。 
last_batch datetime 客户端进程上次执行远程存储过程调用或 EXECUTE 语句的时间。对于系统进程,是存储 SQL Server 启动发生的时间。 
ecid smallint 用于唯一标识代表单个进程进行操作的子线程的执行上下文 ID。 
open_tran smallint 进程的打开事务数。 
status nchar(30) 进程 ID 状态(如运行、休眠等)。 
sid binary(85) 用户的全局唯一标识符 (GUID)。 
hostname nchar(128) 工作站的名称。 
program_name nchar(128) 应用程序的名称。 
hostprocess nchar(8) 工作站进程 ID 号。 
cmd nchar(16) 当前正在执行的命令。 
nt_domain nchar(128) 客户端的 Windows NT 4.0 域(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 域。 
nt_username nchar(128) 进程的 Windows NT 4.0用户名(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 用户名。 
net_address nchar(12) 指派给每个用户工作站上的网络接口卡唯一标识符。当用户登录时,该标识符插入 net_address 列。 
net_library nchar(12) 用于存储客户端网络库的列。每个客户端进程都在网络连接上进入。网络连接有一个与这些进程关联的网络库,该网络库使得这些进程可以建立连接。有关更多信息,请参见客户端和服务器 Net-Library。 
loginame nchar(128) 登录名。 
sql_handle binary(20) 表示当前正在执行的批或对象。 
stmt_start int 当前 SQL 语句中用于指定 sql_handle 的起始偏移量。 
stmt_end int 当前 SQL 语句中用于指定 sql_handle 的终止偏移量。 
-1 指出当前语句为指定的 sql_handle 运行到 fn_get_sql 函数返回结果的结尾。
 
©1988-2002 Microsoft Corporation. 保留所有权利。

解决方案 »

  1.   

    /*--获取连接SQL服务器的信息 所有连接本机的:操作的数据库名,计算机名,用户名,网卡物理地址,IP地址,程序名
    --邹建 2003.11--*//*--调用示例
    --显示所有本机的连接信息
    exec p_getlinkinfo --显示所有本机的连接信息,包含ip地址
    exec p_getlinkinfo @includeip=1 --显示连接指定数据库的信息
    exec p_getlinkinfo '客户资料'
    --*/
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_getlinkinfo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[p_getlinkinfo]
    GOcreate 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 dbid=@dbid)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 '+@hostname+' -a -n 1 -l 1'
    insert #ip(a) exec master..xp_cmdshell @sql
    update #ip set hostname=@hostname where hostname is null
    fetch next from tb into @hostname
    endupdate #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.hostnamelb_show:
    select id,数据库名=dbname,客户机名=hostname,用户名=loginname
    ,网卡物理地址=net_address,IP地址=net_ip,应用程序名称=prog_name from #tbgo
      

  2.   

    不用这么复杂吧,直接执行sp_who存储过程不就行了!