本帖最后由 nofc2006 于 2010-09-21 13:14:28 编辑

解决方案 »

  1.   

    海爷空间有http://blog.csdn.net/Haiwer/archive/2008/10/04/3016270.aspx
      

  2.   

    海爷空间有的http://blog.csdn.net/Haiwer/archive/2008/10/04/3016270.aspx
      

  3.   


    翻阅了一下MSDN,与DBCC相关函数有以下一些,好像没有找到DBCC获取执行的sql脚本的函数啊?--信息语句
    DBCC INPUTBUFFER 
    DBCC SHOWCONTIG  
    DBCC OPENTRAN 
    DBCC SQLPERF  
    DBCC OUTPUTBUFFER 
    DBCC TRACESTATUS  
    DBCC PROCCACHE 
    DBCC USEROPTIONS  
    DBCC SHOW_STATISTICS  
     --验证语句
    DBCC CHECKALLOC 
    DBCC CHECKFILEGROUP  
    DBCC CHECKCATALOG 
    DBCC CHECKIDENT  
    DBCC CHECKCONSTRAINTS 
    DBCC CHECKTABLE 
    DBCC CHECKDB   
     --维护语句
    DBCC CLEANTABLE 
    DBCC INDEXDEFRAG 
     
    DBCC DBREINDEX 
    DBCC SHRINKDATABASE 
     
    DBCC DROPCLEANBUFFERS 
    DBCC SHRINKFILE 
     
    DBCC FREEPROCCACHE 
    DBCC UPDATEUSAGE 
     --杂项语句
    DBCC dllname (FREE) 
    DBCC TRACEOFF 
    DBCC HELP 
    DBCC TRACEON 
     
      

  4.   

    楼主这个问题,建议实现的时候放到前台程序里去控制。
    关于触发器,可以参考一下这个。
    http://blog.csdn.net/sdhdy/archive/2009/06/07/4249668.aspx
      

  5.   

    发现了, DBCC INPUTBUFFER (@@spid); 可以查询当前会话查询最后一次的查询语句
      

  6.   

    上面所有的答案只回答了问题1,获取到了最后次执行的sql语句。
    对于问题2,有没有什么办法?得到如下的结果:(自动解析变动的内容,获得变动前的值 和 变动后的值)ID TableName ChangeDetail
    1 User 修改内容:Hign值:179 => 185 ,Sex: 男 => 女
      

  7.   

    如果是05或08 就好办了 使用 output 字句搞定
      

  8.   

    我在sql2005/sql2008里面试了,可以实现一部分功能,但是要动态取得变动的字段,不太好取,只能把字段事先写死.update User set Hign=185,Sex= '女' output Deleted.Hign,Inserted.Hign,Deleted.Sex,Inserted.Sex得到如下的结果
    High     High     Sex    Sex
    -------------------------------
    175      185      男       女
    现在的问题是,在不知道更新了哪个列的前提下,我怎么把更新字段前后的内容捕获到,并且存放在一个 记录变动表的一个字段当中去呢?得到如下类似的结果:ID TableName ChangeDetail
    1 User 修改内容:Hign值:179 => 185 ,Sex: 男 => 女