特定のデータベースに対するユーザー アクセスまたはアクティビティを格納/キャプチャする SQL テーブルを作成したいと考えています。
たとえば、ユーザーがサーバーにログインして特定のデータベースにクエリを実行するたびに、ユーザー名、アクセス/クエリされたデータベース、アクティビティ時間などのエントリを持つテーブル。
どこかに.txtログファイルがあることは知っていますが、それを自動的に行う簡単な方法はありますか?
どうすればこれを行うことができますか?
前もって感謝します!
特定のデータベースに対するユーザー アクセスまたはアクティビティを格納/キャプチャする SQL テーブルを作成したいと考えています。
たとえば、ユーザーがサーバーにログインして特定のデータベースにクエリを実行するたびに、ユーザー名、アクセス/クエリされたデータベース、アクティビティ時間などのエントリを持つテーブル。
どこかに.txtログファイルがあることは知っていますが、それを自動的に行う簡単な方法はありますか?
どうすればこれを行うことができますか?
前もって感謝します!
You can capture login activity in the SQL Server error log (turn on Login Auditing for "Both failed and successful Logins"):
USE [master];
GO
EXEC xp_instance_regwrite
N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer',
N'AuditLevel',
REG_DWORD,
3;
Or by creating a LOGON TRIGGER and using that to log to a specific table.
However since there are no triggers on SELECT
statements, capturing all queries would require pretty intrusive methods such as a server-side trace or SQL Server Audit.
SQL Server のログオン トリガーについて読む