SQL Server 2005データベースの各ユーザーの最終ログイン時刻を記録する必要があります。SQL Server 2005のログオントリガー用にすべてのサーバーにアクセス許可を設定する場所
CREATE TRIGGER LogonTimeStamp
ON ALL SERVER FOR LOGON
AS
BEGIN
IF EXISTS (SELECT * FROM miscdb..user_last_login WHERE user_id = SYSTEM_USER)
UPDATE miscdb..user_last_login SET last_login = GETDATE() WHERE user_id = SYSTEM_USER
ELSE
INSERT INTO miscdb..user_last_login (user_id,last_login) VALUES (SYSTEM_USER,GETDATE())
END;
go
このトリガは、システム管理者であるユーザーのために動作しますが、それは通常のユーザーはログインできません。
は、私はこのようなトリガーを作成しました。私はパブリックの選択、挿入、テーブルへの更新を許可しましたが、それは問題ではないようです。トリガーにアクセス許可を設定する方法はありますか?私は行方不明の何か他のものがありますか?Logon failed for login 'xxxx' due to trigger execution.
Changed database context to 'xxxx',
Changed language setting to us_english. (Microsoft SQL Server, Error: 17892).
おかげ
EDIT:
通常のユーザーは、エラーメッセージが表示されます私たちは、ただ、これが唯一のActive Directoryアカウントではなく、SQLのアカウントのために起こることに気づきました。例えば
:すべての
C:\>osql -S server -E
Logon failed for login 'xxx\xxxx' due to trigger execution.
C:\>osql -S server -U xxxx
Password:
1>
問題は、データベースへのログインを持つすべてのユーザーがユーザーではないということですmiscdbデータベースに保存します。 miscdbのユーザでない場合、ログインできません。必要なデータベースにユーザーを追加するときに、このデータベースにユーザーを追加することを忘れたくはありません。サーバーのすべてのログインに権限を与える方法はありますか? – Jay