0

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

干杯。

BLT。

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

4

3 回答 3

1

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

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

基于此词汇表

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

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

于 2009-09-07T21:19:29.033 回答
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 ^_^

于 2009-09-04T06:16:54.877 回答
0

您可以使用以下SUSER_NAME()功能将 suid 转换为登录名,例如

SELECT spid,
       SUSER_NAME(suid)      AS login_name
  FROM master..sysprocesses
 ORDER
    BY login_name ASC
于 2009-09-24T02:20:10.717 回答