2009-09-04 10 views
0

Kann eine KPID (wie select kpid from master..sysprocesses) global und immer eindeutig sein? (Ich habe festgestellt, dass für meine kleine Stichprobe KPID(n+1) ~= KPID(n) + 65536 (2^16) aber ich möchte wissen, ob ich annehmen kann, vorherige db-verbindungen kpid ist einzigartig, auch wenn es vorher loginame und spid eine neue loginame und spid)Ist KPID in Sybase weltweit einzigartig?

Prost.

BLT.

(bereits beantwortet) * B) loginame: wie kann ich die loginame von einem aktuellen spid bekommen? loginame ist keine Spalte in sysprocesses, und ich kann keine andere Tabelle als sysobjects finden, die eine Spalte mit loginame hat, und ich kann nicht programmatisch die loginame aus Sp_who bekommen. Vielleicht hat die SQL sp_who helfen würde ..

Antwort

1

Basierend auf these docs KPID ist einzigartig innerhalb der ma Chine. Es kann innerhalb eines Clusters eindeutig sein, aber dies erscheint unwahrscheinlich, da es sich auf einen Bezeichner innerhalb des zugrunde liegenden Betriebssystems bezieht.

Da es nur ein 32-Bit-Wert ist, gibt es keine Möglichkeit, dass es global einzigartig sein kann.

Basierend auf this glossary

Kernel-Prozess-ID Version: 11.0 und später
Ein adaptive Server-Prozess-ID, die über lange Zeiträume einzigartig bleibt.

Die 'Einzigartigkeit' des Wertes hat eine Art Zeitrahmen, aber es ist nicht garantiert.

+0

Danke dafür, Shuggy. Das ist alles, was ich wissen wollte :) – glasnt

0

Antwort auf Teil B)

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

Wie zu generieren, können Sie den Namen einer Verbindung a la Sp_who von

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

Durch die Beantwortung meiner eigenen Fragen helfe ich Stackoverflow zu wachsen^_^

0

Sie können einen suid in einen Anmeldenamen übersetzen, indem Sie die Funktion SUSER_NAME() verwenden, z.

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