2016-03-24 17 views
0

データベース上で一意のセッションIDを永久に取得または作成する方法を知りました。一意のセッションIDを作成する方法(SSPIDとは異なります)

@SSPIDは一意ではありません。誰かがログアウトすると再利用されます。

+2

何が必要ですか? GUIDは「ユニーク」とみなされるものを作成する通常の方法です –

+0

@ AllanS.Hansenログイン時にGUIDを取得するにはどうすればよいですか?データベースのトリガー?アイデアは、さまざまなユーザーアクションを記録するために使用できる一意のIDを持つことです。 – askolotl

+0

セッションごとに永続的なIDまたは変更をしたいですか? – Squirrel

答えて

0

評判が不十分で、これは解答ではない理由です。

SPID + GETDATE()を使用すると、年月を経ても一意の識別可能なセッションを取得できます。

+0

しかし、どうすれば作成できますか?そして、私は1つのセッサンの間に同じように保つのですか?一意のIDは、ログイン中に作成する必要があり、その後、セッション全体で同一である必要があります。私が 'GetDate()'をもう一度呼び出すと、もちろん変更されます。 – askolotl

+0

ログイン時にのみ固有のIDを作成します。同じセッションで 'GETDATE()'をもう一度呼び出すのはなぜですか? – freakyhat

+0

OK、ログイン中にIDを作成するとします。その後、いくつかの更新トリガーでそれが必要になります。または他のproceudre。もう一度同じIDを取得するにはどうすればいいですか? – askolotl

0

LOGONトリガーを使用して一意のIDを生成し、表に挿入できます。あなたのアプリケーションはこのIDを検索して使用することができます

CREATE TABLE session_audit 
    (
     uid  uniqueidentifier not null, 
     login_name varchar(100), 
     login_dt datetime, 
     session_id smallint, 
     hostname nvarchar(128), 
     constraint pk_session_audit primary key (uid) 
    ) 

CREATE TRIGGER session_audit_trigger 
ON ALL SERVER FOR LOGON 
AS 
BEGIN 
    IF SUSER_SNAME() not in ('sa') -- do not log for sa 
    BEGIN 
    INSERT INTO Test.dbo.session_audit (uid, login_name, login_dt, session_id, hostname) 
    SELECT NEWID(), SUSER_SNAME(), GETDATE(), @@SPID, HOST_NAME(); 
    END 
END; 
GO 
ENABLE TRIGGER session_audit_trigger ON ALL SERVER; 
+0

ありがとうございます(投票はできません、15回の回答が必要です)。それは私が探している方向に行く。 – askolotl

関連する問題