2012-02-14 7 views

答えて

3

これにはトリガーと結果を格納するテーブルが必要です。非常に迅速なプロトタイプ:各Accessユーザーが自分自身としてSQL Serverに認証されない限り、あなたはそこに、それらはすべて同じSQLユーザーとして接続する場合(それらを識別するために、ホスト名または他のいくつかのプロパティを使用する必要があること

CREATE TRIGGER dbo.trigger_name 
ON dbo.table_name 
FOR DELETE 
AS 
    INSERT INTO dbo.LogTable(RowID, UserName) 
     SELECT PK_Column, SUSER_SNAME() 
     FROM deleted; 
GO 

注意SQL Serverが本当に誰であるかを判断することはほとんどできません)。

+0

何らかの理由で、私はHOSTNAME()を使用すると、オフサイトユーザーの複数のユーザーに対して同じHOSTNAME()を返します。私はそれがネットワークの問題だと思う。 SUSERNAME()はBOGUSを返します。 Accessアプリケーションを変更することはできないため、それぞれの認証を行うことはできません。 – Bruno

+1

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええんは、その要求をSQL Serverに渡したホスト名だけを見ることができますまた、SQL認証を使用している場合は、Windowsユーザー名を取得するのに苦労するでしょう(私はそれが 'BOGUS'であると仮定します)。 Profilerが実際のユーザー名をどのように表示しているかわかりません。すべてのユーザーにとって正確ですか? Profilerはどこから実行されていますか、Accessアプリケーションが実行されているマシンと同じマシンですか? –

+0

Profilerは、SQL Serverがサーバー上で実行され、Accessアプリケーションが異なるネットワーク共有から実行されている私のマシンから実行されています。 – Bruno

関連する問題