none
T-SQL执行大批量insert和delete时,不想记录日志,该怎么写 RRS feed

  • 问题

  • T-SQL执行大批量insert和delete时,不想记录日志,该怎么写

      insert into t_feiypm(areacode,cyear,jijpmbh,guobzj,shengbzj)  values(@code,@cyear,@jijpmbh,0,0)      --执行100次

     delete  from t_feiypm where jijpmbh=@jijpmbh;                                                                                 --删除100条

    我想做两句话时,不记录日志,有没有什么语句

     

    2010年12月16日 6:58

答案

  • 这两个语句是full logged的.

     

    select into * from table1是bulk operation操作,在bulk logged恢复模式下只记录metadata.

    如果删除大量数据,可以考虑分区, 分区(对齐的情况下)switch in/out只操作元数据,记录少量日志


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    • 已标记为答案 m s 2010年12月28日 1:02
    2010年12月16日 8:26
    版主
  • 不记是不可能的

    能控制的, 只是记录的详细程度

    一般来说, 要减少日志记录的, 可以把数据库恢复模型设置为 simple, 同时, 在语句上, 尽量避免逐条处理, 改为使用大批量处理, insert .... select 或者 bcp / bulk insert 这种

     

    • 已建议为答案 Ai-hua Qiu 2010年12月22日 7:44
    • 已标记为答案 m s 2010年12月28日 1:02
    2010年12月20日 4:27
  • 可用臨時表/表變量

     


    ROY WU(吳熹)
    • 已标记为答案 m s 2010年12月28日 1:02
    2010年12月22日 4:14
    版主

全部回复

  • 这两个语句是full logged的.

     

    select into * from table1是bulk operation操作,在bulk logged恢复模式下只记录metadata.

    如果删除大量数据,可以考虑分区, 分区(对齐的情况下)switch in/out只操作元数据,记录少量日志


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    • 已标记为答案 m s 2010年12月28日 1:02
    2010年12月16日 8:26
    版主
  • DML绝对记日志,你所想的MS令你失望了。。。
    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    2010年12月17日 6:40
  • 你可以考虑先插入表变量,然后insert ... select
    想不想时已是想,不如不想都不想。
    2010年12月18日 18:24
    版主
  • 不记是不可能的

    能控制的, 只是记录的详细程度

    一般来说, 要减少日志记录的, 可以把数据库恢复模型设置为 simple, 同时, 在语句上, 尽量避免逐条处理, 改为使用大批量处理, insert .... select 或者 bcp / bulk insert 这种

     

    • 已建议为答案 Ai-hua Qiu 2010年12月22日 7:44
    • 已标记为答案 m s 2010年12月28日 1:02
    2010年12月20日 4:27
  • Simple recovery mode doesn't reduce logging.
    2010年12月20日 4:36
  • 可用臨時表/表變量

     


    ROY WU(吳熹)
    • 已标记为答案 m s 2010年12月28日 1:02
    2010年12月22日 4:14
    版主