表结构被改了的话,就用DDL触发器。 表数据被改了的话,可以用INSERT和UPDATE审计查看所有数据库操作语句和操作用户。 给你个Select审计的例子USE master CREATE SERVER AUDIT testAudit TO FILE(FILEPATH='D:\TempSelectAudit\') GO CREATE DATABASE AUDIT SPECIFICATION testAudSpec FOR SERVER AUDIT testAudit ADD (SELECT ON HumanResources.Employee BY Public) GO USE master SELECT is_state_enabled,* FROM sys.server_file_audits USE AdventureWorks SELECT is_state_enabled,* FROM sys.database_audit_specifications GO USE master ALTER SERVER AUDIT testAudit WITH (STATE=ON) GO USE AdventureWorks ALTER DATABASE AUDIT SPECIFICATION testAudSpec WITH (STATE=ON) GO SELECT session_server_principal_name, statement, * FROM fn_get_audit_file ('D:\TempSelectAudit\*',NULL, NULL)
如果日志什么的没清除,是可以查到的
可以查到除了truncate以为的所有语句,是服务器上常用的还原SQL操作软件。
如果数据库日志模式不是Simple 而是Full 模式的话
可以查询所有的Insert/Update/Delete 的Transaction事件记录
而且给出 redo/undo 脚本...
表数据被改了的话,可以用INSERT和UPDATE审计查看所有数据库操作语句和操作用户。
给你个Select审计的例子USE master
CREATE SERVER AUDIT testAudit TO FILE(FILEPATH='D:\TempSelectAudit\')
GO
CREATE DATABASE AUDIT SPECIFICATION testAudSpec FOR SERVER AUDIT testAudit
ADD (SELECT ON HumanResources.Employee BY Public)
GO
USE master
SELECT is_state_enabled,* FROM sys.server_file_audits
USE AdventureWorks
SELECT is_state_enabled,* FROM sys.database_audit_specifications
GO
USE master
ALTER SERVER AUDIT testAudit WITH (STATE=ON)
GO
USE AdventureWorks
ALTER DATABASE AUDIT SPECIFICATION testAudSpec WITH (STATE=ON)
GO
SELECT session_server_principal_name, statement, *
FROM fn_get_audit_file ('D:\TempSelectAudit\*',NULL, NULL)