2009-09-04 2 views
0

Может ли KPID (как select kpid from master..sysprocesses) быть глобальным и всегда уникальным? (Я нашел, что для моего небольшого набора образцов KPID(n+1) ~= KPID(n) + 65536 (2^16), но я хочу знать, могу ли я предположить, что предыдущие соединения db kpid уникален, даже если это предыдущий логин и спид соответствуют новым loginame и spid)Является ли KPID глобально уникальным в Sybase?

Cheers.

BLT.

(Уже ответил) * B) Loginame: , как я могу получить loginame от текущего ИСП? loginame не является колонкой в ​​sysprocesses, и я не могу найти ни одной таблицы, кроме sysobjects, которая имеет столбец с loginame, и я не могу программно получить loginame из sp_who. Может быть, SQL используется для создания sp_who поможет ..

ответ

1

Основано на these docs KPID уникально в пределах ma скула. Он может быть уникальным в кластере, но это кажется маловероятным, поскольку он относится к идентификатору в базовой операционной системе.

Поскольку это всего лишь 32-битное значение, он не может быть глобально уникальным.

основе this glossary

Kernel идентификатор процесса Версия: 11,0, а затем
процесс адаптивного сервера идентификатор, который остается уникальным в течение длительных периодов времени.

«Уникальность» значения имеет какой-то таймфрейм, но это не гарантируется.

+0

Благодарим за это, Shuggy. Это то, что я хотел знать :) – glasnt

0

Ответ на часть B)

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

Как, вы можете получить имя соединения а-ля sp_who идя

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

Отвечая на мои собственные вопросы, я помогаю расти stackoverflow^_^

0

Вы можете перевести suid на имя пользователя, используя функцию SUSER_NAME(), например.

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