【问题标题】:Is KPID globally unique within Sybase?KPID 在 Sybase 中是全局唯一的吗?
【发布时间】:2009-09-04 04:47:23
【问题描述】:

是否可以假定 KPID(如 select kpid from master..sysprocesses)是全局且始终唯一的? (我发现对于我的小样本集 KPID(n+1) ~= KPID(n) + 65536 (2^16) 但我想知道是否可以假设,以前的数据库连接 kpid 是唯一的,即使它以前的登录名和 spid 匹配新的 loginamespid)

干杯。

BLT。

(已经回答) *B) 登录名:如何从当前的 spid 中获取登录名loginame 不是sysprocesses 中的列,除了sysobjects 之外,我找不到任何具有loginame 列的表,而且我无法以编程方式获取loginame sp_who。也许用于生成sp_who 的 sql 会有所帮助..

【问题讨论】:

    标签: sybase spid


    【解决方案1】:

    基于these docs KPID 在机器内是唯一的。它在集群中可能是唯一的,但这似乎不太可能,因为它指的是底层操作系统中的标识符。

    因为它只是一个 32 位的值,所以它不可能是全局唯一的。

    基于this glossary

    内核进程 ID 版本:11.0 及更高版本
    一个长时间保持唯一的 Adaptive Server 进程标识符。

    值的“唯一性”有某种时间范围,但不能保证。

    【讨论】:

    • 谢谢你,舒吉。这就是我想知道的:)
    【解决方案2】:

    回答 B)

    master..syslogins.suid <-> master..sysprocesses.suid
    

    如中,您可以通过 go 获取连接的名称 la sp_who

    select p.spid, l.name, p.loggedindatetime 
    from master..syslogins l, master..sysprocesses p
    where l.suid = p.suid
    

    通过回答我自己的问题,我正在帮助发展 stackoverflow ^_^

    【讨论】:

      【解决方案3】:

      您可以使用 SUSER_NAME() 函数将 suid 转换为登录名,例如

      SELECT spid,
             SUSER_NAME(suid)      AS login_name
        FROM master..sysprocesses
       ORDER
          BY login_name ASC
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-19
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        • 2018-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多