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会有所帮助..
答案 0 :(得分:1)
基于these docs KPID在机器中是唯一的。它在集群中可能是唯一的,但这似乎不太可能,因为它引用底层操作系统中的标识符。
由于它只是一个32位的值,所以它无法在全球范围内独一无二。
内核进程ID版本:11.0及更高版本
Adaptive Server进程标识符,在很长一段时间内保持唯一。
价值的“唯一性”具有某种时间范围,但不能保证。
答案 1 :(得分:0)
回答B部分)
master..syslogins.suid <-> master..sysprocesses.suid
在中,您可以通过
获取连接的名称la sp_whoselect 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