2009-09-04 17 views
0

Un KPID (comme select kpid from master..sysprocesses) peut-il être supposé globalement et toujours unique? (J'ai trouvé que pour mon petit échantillon KPID(n+1) ~= KPID(n) + 65536 (2^16) mais je veux savoir si je peux supposer, les précédentes connexions kpid de db est unique, même si c'est précédent loginame et spid correspondent à un nouveau loginame et spid)KPID est-il globalement unique au sein de Sybase?

Cheers.

BLT.

(déjà répondu) * B) loginame: comment puis-je obtenir le loginame d'un SPID courant? loginame n'est pas une colonne dans sysprocesses, et je ne trouve pas de table autre que sysobjects qui a une colonne avec loginame, et je ne peux pas obtenir par programme le loginame de sp_who. Peut-être le sql utilisé pour générer sp_who contribuerait ..

Répondre

1

Basé sur these docs KPID est unique au sein de la ma échine. Il peut être unique au sein d'un cluster, mais cela semble peu probable car il fait référence à un identifiant dans le système d'exploitation sous-jacent.

Comme il s'agit seulement d'une valeur de 32 bits, il ne peut en aucun cas être globalement unique.

Basé sur this glossary

processus noyau ID Version: 11.0 et versions ultérieures
Un identificateur de processus Adaptive Server qui reste unique sur de longues périodes de temps.

L''unicité' de la valeur a une sorte de délai, mais ce n'est pas garanti.

+0

Merci pour cela, Shuggy. C'est tout ce que je voulais savoir :) – glasnt

0

Réponse à la partie B)

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

Comme, vous pouvez obtenir le nom d'une connexion à la sp_who en allant

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

En répondant à mes propres questions, je contribue à développer stackoverflow^_^

0

Vous pouvez traduire un suid en un nom de connexion à l'aide de la fonction SUSER_NAME(), par ex.

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