2009-09-04 6 views
0

KPID(select kpid from master..sysprocesses)は、グローバルかつ常に一意であると想定できますか? (私は小さなサンプルをKPID(n+1) ~= KPID(n) + 65536(2^16)に設定しましたが、前回のログイン名とspidが新しいloginamespidと一致していても、前回のdb接続kpidが一意であるかどうかを知りたいと思います)KPIDはSybase内でグローバルに一意ですか?

乾杯。

BLT。

* B)loginameのを(はすでにに答え):は、どのように私は、現在のspidからloginameのを得ることができますか? loginamesysprocessesの列ではなく、loginameの列を持つsysobjects以外のテーブルは見つかりません。プログラムではsp_whoからloginameを取得できません。たぶんsp_whoが役立つだろう生成するために使用されるSQL ..パートBへ

答えて

1

these docsに基づいてKPIDはmaチャイン。これはクラスタ内で一意である可能性がありますが、基本的なオペレーティングシステム内の識別子を参照するため、これは起こりそうにないようです。

これはわずか32ビットの値なので、グローバルに一意である可能性はありません。長期間にわたってユニークなまま11.0以降
Adaptive Serverプロセス識別子:this glossary

カーネル・プロセスIDバージョンに基づいて

値の '一意性'には何らかの時間枠がありますが、保証されていません。

+0

ありがとう、Shuggy。それが私が知りたかったものです。 – glasnt

0

回答)として

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

SUSER_NAME()関数を使ってsuidをログイン名に変換することができます。

SELECT spid, 
     SUSER_NAME(suid)  AS login_name 
    FROM master..sysprocesses 
ORDER 
    BY login_name ASC 
関連する問題