最近里那个天数据库数据被无故更新,想知道更新了哪些地方,
如果查询?

解决方案 »

  1.   

    安装Log Explorer
    如果日志什么的没清除,是可以查到的
    可以查到除了truncate以为的所有语句,是服务器上常用的还原SQL操作软件。
      

  2.   

    好像是truncate跟drop的都是不能回复的,这块记不清了,但是delete跟insert,update的这一类语句都可以查到操作。
      

  3.   

    找到了一个ApexSQL软件,
    如果数据库日志模式不是Simple 而是Full 模式的话
    可以查询所有的Insert/Update/Delete 的Transaction事件记录
    而且给出 redo/undo 脚本...
      

  4.   

    使用“DDL 触发器”可以记录每个DDL操作的详情。详细用法看联机丛书。网上也有相关的代码,我的代码放服务器了,暂时拿不了。
      

  5.   

    用MSSQL事件探测器试试,日志文件也可以查吧
      

  6.   

    表结构被改了的话,就用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)