KPID在Sybase中是全球唯一的吗?

时间:2009-09-04 04:47:24

标签: sybase spid

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

干杯。

BLT。

已经回答)* B)登录名:如何从当前spid获取loginame spid不是loginame中的列,我找不到sysprocesses以外的任何表格,其中包含sysobjects列,我可以'以编程方式从sp_who中获取loginame。也许用于生成loginame的sql会有所帮助..

3 个答案:

答案 0 :(得分:1)

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

由于它只是一个32位的值,所以它无法在全球范围内独一无二。

基于this glossary

  

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

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

答案 1 :(得分:0)

回答B部分)

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

在中,您可以通过

获取连接的名称la sp_who
select p.spid, l.name, p.loggedindatetime 
from master..syslogins l, master..sysprocesses p
where l.suid = p.suid

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

答案 2 :(得分:0)

您可以使用SUSER_NAME()功能将suid翻译为登录名,例如

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