0
SQL Serverにリンクされたテーブルを持つMS Accessアプリです。 MS Accessアプリケーションを変更できないので、SQL Serverにこれを記録する必要があります。MS Accessでレコードを削除したユーザーはどのようにログに記録しますか?
このアプリケーションは、デフォルトのSQLユーザー名でSQL Serverに接続します。
SQL Serverにリンクされたテーブルを持つMS Accessアプリです。 MS Accessアプリケーションを変更できないので、SQL Serverにこれを記録する必要があります。MS Accessでレコードを削除したユーザーはどのようにログに記録しますか?
このアプリケーションは、デフォルトのSQLユーザー名でSQL Serverに接続します。
これにはトリガーと結果を格納するテーブルが必要です。非常に迅速なプロトタイプ:各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が本当に誰であるかを判断することはほとんどできません)。
何らかの理由で、私はHOSTNAME()を使用すると、オフサイトユーザーの複数のユーザーに対して同じHOSTNAME()を返します。私はそれがネットワークの問題だと思う。 SUSERNAME()はBOGUSを返します。 Accessアプリケーションを変更することはできないため、それぞれの認証を行うことはできません。 – Bruno
えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええんは、その要求をSQL Serverに渡したホスト名だけを見ることができますまた、SQL認証を使用している場合は、Windowsユーザー名を取得するのに苦労するでしょう(私はそれが 'BOGUS'であると仮定します)。 Profilerが実際のユーザー名をどのように表示しているかわかりません。すべてのユーザーにとって正確ですか? Profilerはどこから実行されていますか、Accessアプリケーションが実行されているマシンと同じマシンですか? –
Profilerは、SQL Serverがサーバー上で実行され、Accessアプリケーションが異なるネットワーク共有から実行されている私のマシンから実行されています。 – Bruno