0

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

乾杯。

BLT。

すでに回答済み)* B)Loginame:現在のspidからloginameを取得するにはどうすればよいですか?loginameはの列ではなく、列が含まれているsysprocessesテーブル以外のテーブルは見つかりません。また、プログラムでsp_whoから抜け出すこともできません。たぶん、生成に使用されるSQLが役立つでしょう。sysobjectsloginameloginamesp_who

4

3 に答える 3

1

これらのドキュメントに基づいて、 KPID はマシン内で一意です。クラスタ内で一意である可能性がありますが、基盤となるオペレーティング システム内の識別子を参照しているため、これはありそうにありません。

これは 32 ビット値のみであるため、グローバルに一意になる方法はありません。

この用語集に基づいて

Kernel Process ID バージョン : 11.0 以降
長期間にわたって一意である Adaptive Server プロセス ID。

値の「一意性」にはある種の時間枠がありますが、保証されていません。

于 2009-09-07T21:19:29.033 に答える
0

SUSER_NAME()次の関数を使用して、suid をログイン名に変換できます。

SELECT spid,
       SUSER_NAME(suid)      AS login_name
  FROM master..sysprocesses
 ORDER
    BY login_name ASC
于 2009-09-24T02:20:10.717 に答える
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 の成長に貢献しています ^_^

于 2009-09-04T06:16:54.877 に答える