您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_who

进程模式需考虑事项

sp_who 不包括 threadpool 列。

语法


sp_who [<loginame> | "<spid>"]

参数

<loginame>

是一个用户的 SAP ASE 登录名,您请求报告的就是该用户的情况。

<spid>

是要报告其相关信息的进程的编号。请用引号将进程编号引起(SAP ASE 服务器要求编号为 char 类型)。

示例

示例 1

报告正在 SAP ASE 服务器上运行的进程。虽然除 sp_who 外没有任何其他用户进程正在运行,服务器仍会显示活动。在空闲循环期间,管家清洗任务将脏缓冲区移动到缓冲区清洗区域中,管家杂事任务执行其它维护任务。管家碎片收集任务以普通用户的优先级工作。该任务清除在逻辑上已被删除的数据并重置各行,使表重新拥有空间。


sp_who

fid spid  status   loginame   origname   hostname           blk_spid  dbname
   tempdbname   cmd              block_xloid    threadpool
--- ----  --------- --------- ---------  ----------------   --------  -----------
   ----------- ----------------- -----------    -----------------
  0    2   sleeping      NULL      NULL              NULL          0       master
         tempdb     DEADLOCK TUNE           0    syb_default_pool
  0    3   sleeping      NULL      NULL              NULL          0       master
   tempdb            ASTC HANDLER           0    syb_default_pool
  0    4   sleeping      NULL      NULL              NULL          0       master
   tempdb        CHECKPOINT SLEEP           0    syb_default_pool
  0    5   sleeping      NULL      NULL              NULL          0       master
   tempdb                 HK WASH           0    syb_default_pool
  0    6   sleeping      NULL      NULL              NULL          0       master
   tempdb                   HK GC           0    syb_default_pool
  0    7   sleeping      NULL      NULL              NULL          0       master
   tempdb               HK CHORES           0    syb_default_pool
  0    8   sleeping      NULL      NULL              NULL          0       master
   tempdb            PORT MANAGER           0    syb_default_pool
  0    9   sleeping      NULL      NULL              NULL          0       master
   tempdb         NETWORK HANDLER           0    syb_default_pool
  0   10   sleeping      NULL      NULL              NULL          0       master
   tempdb       LICENSE HEARTBEAT           0    syb_default_pool
  0   13   sleeping      NULL      NULL              NULL          0       master
   tempdb         NETWORK HANDLER           0    syb_default_pool
  0   14   sleeping      NULL      NULL              NULL          0       master
   tempdb         NETWORK HANDLER           0    syb_default_pool
  0   17   sleeping      NULL      NULL              NULL          0       master
   tempdb         NETWORK HANDLER           0    syb_default_pool
  0   20   sleeping      NULL      NULL              NULL          0       master
   tempdb         NETWORK HANDLER           0    syb_default_pool
  0   26   running         sa        sa  tiger.sybase.com          0       master
   tempdb                     INSERT            0     syb_default_pool

示例 2

报告正在 SAP ASE 服务器上运行的进程。进程 11(对表执行 select into)被进程 8(对同一个表执行 begin transaction,随后对其执行 insert)阻塞。对于进程 8,当前 <loginame> 为“robert”,但原 为“sa”。登录名“sa”执行了一个 set proxy 命令来模拟用户“robert”:


sp_who

fid spid  status      loginame   origname   hostname          blk_spid  dbname
   tempdbname  cmd               block_xloid    threadpool
--- ----  ---------   ---------  ---------  ---------------   --------  -----------
   ----------- ----------------- -----------    -----------------
  0    1 recv sleep        bird       bird            jazzy          0       master
        tempdb  AWAITING COMMAND           0     syb_default_pool
  0    2   sleeping        NULL       NULL                           0       master
        tempdb  NETWORK HANDLER            0     syb_default_pool
  0    3   sleeping        NULL       NULL                           0       master
        tempdb  MIRROR HANDLER             0     syb_default_pool
  0    4   sleeping        NULL       NULL                           0       master
        tempdb  AUDIT PROCESS              0     syb_default_pool
  0    5   sleeping        NULL       NULL                           0       master
        tempdb  CHECKPOINT SLEEP           0     syb_default_pool
  0    6 recv sleep        rose                   rose petal         0       master
        tempdb  AWAITING COMMAND           0     syb_default_pool
  0    7   sleeping        NULL       NULL             actor         0  sybsystemdb
        tempdb  ASTC HANDLER               0     syb_default_pool
  0    8    running      robert         sa             helos         0       master
        tempdb  SELECT                     0     syb_default_pool
  0    9  send sleep      daisy      daisy             chain         0        pubs2
        tempdb  SELECT                     0     syb_default_pool
  0   10 alarm sleep       lily       lily              pond         0       master
        tempdb  WAITFOR                    0     syb_default_pool
  0   11  lock sleep      viola      viola             cello         8        pubs2
        tempdb  INSERT                     0     syb_default_pool

示例 3

报告用户“joe”正在运行的进程的情况:


sp_who joe

fid spid  status   loginame   origname   hostname           blk_spid  dbname
   tempdbname   cmd              block_xloid    threadpool
--- ----  --------- --------- ---------  ----------------   --------  -----------
   ----------- ----------------- -----------    -----------------
  0   28 recv sleep       joe       joe  tiger.sybase.com          0        pubs2
         tempdb          SELECT           0           syb_default_pool

示例 4

报告编号为 17 的 SAP ASE 服务器进程正在执行什么操作:


sp_who "17"

fid spid  status   loginame   origname   hostname           blk_spid  dbname
   tempdbname   cmd              block_xloid    threadpool
--- ----  --------- --------- ---------  ----------------   --------  -----------
   ----------- ----------------- -----------    -----------------
  0   17   sleeping      NULL      NULL              NULL          0        pubs2
         tempdb     NETWORK HANDLER            0       syb_default_pool

示例 5

报告一个由系统引起、属于某一事务或某一命令的回退的情况:


sp_who

fid spid  status   loginame   origname   hostname           blk_spid  dbname
   tempdbname   cmd              block_xloid    threadpool
--- ----  --------- --------- ---------  ----------------   --------  -----------
   ----------- ----------------- -----------    -----------------
  0   28    running       joe       joe  tiger.sybase.com          0        pubs2
         tempdb         rollback               0       syb_default_pool

用法

使用 sp_who 时,还存在一些其它注意事项:

  • sp_who 报告有关指定的用户或 SAP ASE 服务器进程的信息。

  • 如果不指定参数,sp_who 将报告所有数据库中哪些用户正在运行哪些进程。

  • sp_who 返回的列包括:

    fid

    标识锁属于哪个系列(包括协调进程及其工作进程)。有关详细信息,请参见 sp_familylock。

    spid

    标识进程编号。系统管理员可以将此编号与 Transact-SQL kill 命令搭配使用来停止相应进程。

    status

    指示该进程是处于运行状态还是处于休眠状态。

    loginame

    启动该进程的用户的登录名或别名。对于所有系统进程,loginame 均为 NULL。

    origname

    如果 loginame 是一个别名,origname 会显示实际登录名。否则,origname 显示的信息与 loginame 相同。

    hostname

    相应数据库所在的服务器的名称。

    blk_spid

    如果有阻塞进程,则包含该进程的进程 ID。阻塞进程(可能是受影响的进程或持有排它锁)是指持有另一进程所需要的资源的进程。

    dbname

    指示正在运行该进程的数据库的名称。

    tempdbname

    分配到会话的临时数据库名称。

    cmd

    标识当前正在执行的命令或进程。此信息由 sysprocesses 的 cmd 列提供。对条件语句(例如,if 或 while 循环)求值时返回 cond。

    block_xloid

    标识阻塞事务的唯一锁所有者 ID。

    threadpool

    任务使用的线程池。

  • 在单引擎服务器上运行 sp_who 将显示当前正在运行的 sp_who 进程以及所有其它可运行或处于其中一种休眠状态的进程。在多引擎服务器中,每个引擎都可能会有一个“正在运行”的进程。

  • 如果启用了镜像磁盘或远程过程调用,镜像处理程序和节点处理程序也会出现在 sp_who 输出的报告中。