truncate 是DDL操作,做个DDL触发器来记录,一般DDL操作的次数都不多

解决方案 »

  1.   

    sql server没有oracle的这个日志挖掘的功能的。只能是自己建立dml 和ddl 触发器
      

  2.   

    DML的触发器会影响到性能吧?我测试的DML触发器无法记录truncate的操作,能否提供下脚本,谢谢!
      

  3.   

    DML会影响,但是DDL相对较少,我说了truncate是DDL操作...
      

  4.   

    我刚才试了一下,好像ddl触发器无法跟踪到truncate 操作
      

  5.   

    2005很多技术都用不了,目前只有DDL触发器比较靠谱
      

  6.   


    确实,dml触发器没办法跟踪到 truncate操作。
      

  7.   

    不好意思,刚才写错了,我测试的DDL触发器,无法记录truncate的操作.
      

  8.   

    另外,我查询了sql server 的ddl触发器 ,无法支持 tuncate:select * from sys.trigger_event_types
    where type_name like '%table%' 
    /*
    type type_name parent_type
    21 CREATE_TABLE 10018
    22 ALTER_TABLE 10018
    23 DROP_TABLE 10018
    10017 DDL_TABLE_VIEW_EVENTS 10016
    10018 DDL_TABLE_EVENTS 10017
    */
      

  9.   


    我觉得唯一能跟踪的办法,就是用sql profiler了
      

  10.   

    忘了我收藏了一篇http://www.2cto.com/database/201307/228173.html
      

  11.   

    思路类似,或者找default sql trace
      

  12.   


    根据当时备份的Transaction log可以找到Truncate的语句,但是还是看不出谁下的指令,麻烦再指点下,谢谢!
      

  13.   

    问过某位MVP,说他用过log exploer,看到truncate有有userid记录的,你试试能不能找到,我没有用过这工具,他还推荐了我一个工具:apex sql log 你也可以试试能不能找到
      

  14.   

    Apex SQL Log/LiteSpeed这些第三方的工具。
      

  15.   

    非常非常感谢.附件是用log explorer分析备份transaction log的结果,NT User Name是空的.用Apex sql log时DDL语句选项中没有truncate这项.
      

  16.   


    想再问下,[Server UID]=0,UID=-1代表什么意思呀?