--In the master database create a server audit
USE master
GO
CREATE SERVER AUDIT [Audit_Select_HumanResources_Employee]
TO FILE
( FILEPATH = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup'
,MAXSIZE = 0 MB
,MAX_ROLLOVER_FILES = 2147483647
,RESERVE_DISK_SPACE = OFF)
WITH
(QUEUE_DELAY = 1000, state= on)
ALTER SERVER AUDIT Audit_Select_HumanResources_Employee
WITH (STATE = ON) ;
GO
--In the database to monitor create a database audit
USE [AdventureWorks2012]
go
CREATE DATABASE AUDIT SPECIFICATION [Database-Audit]
FOR SERVER AUDIT [Audit_Select_HumanResources_Employee]
--In this example, we are monitoring the humanResources.employee
ADD (SELECT ON OBJECT::[HumanResources].[Employee] BY [dbo])
with (state=on)
--Now you can see the activity in the audit file created
SELECT * FROM sys.fn_get_audit_file ('c:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\Audit_Select_HumanResources_Employee.sqlaudit',default,default);
GO
私はちょうどあなたのためのコードを追加しました。コードはサーバー監査、選択されたアクティビティのデータベース監査を作成し、最後にsys.fn_get_audit_fileを使用してファイルから情報を取得します。テーブルごとに個別に行う必要があります。より自動化されたクエリが必要な場合は、Apex SQL Auditや他のサードパーティのツールを使用することができます。
私はSQL Server 2008の監査も検討していましたが、残念ながら今はSQL Server 2005を扱っています。私はdevサーバー(2008)からプロダクションサーバー(2005)へのリンクを作成し、監査を使用できるのだろうかと思います。 – Sung
さらに、エンタープライズ専用です。 – Oliver