日期:2014-05-18  浏览次数:20442 次

各位有没有什么方式 可以查询到最近一周更新数据库的语句?
最近里那个天数据库数据被无故更新,想知道更新了哪些地方,
如果查询?

------解决方案--------------------
安装Log Explorer
如果日志什么的没清除,是可以查到的
可以查到除了truncate以为的所有语句,是服务器上常用的还原SQL操作软件。
------解决方案--------------------
探讨
找到了一个ApexSQL软件,
如果数据库日志模式不是Simple 而是Full 模式的话
可以查询所有的Insert/Update/Delete 的Transaction事件记录
而且给出 redo/undo 脚本...

------解决方案--------------------
使用“DDL 触发器”可以记录每个DDL操作的详情。详细用法看联机丛书。网上也有相关的代码,我的代码放服务器了,暂时拿不了。
------解决方案--------------------
这个好像不行吧
------解决方案--------------------
表结构被改了的话,就用DDL触发器。
表数据被改了的话,可以用INSERT和UPDATE审计查看所有数据库操作语句和操作用户。
给你个Select审计的例子
SQL code

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)