`

SQL Server 一次性删除大量数据时的“事务日志已满”问题及truncate的使用

阅读更多
在使用sqlserver数据库做一次性删除大量同数据(几万条)的时候抛出异常如下:
消息 9002,级别 17,状态 4,第 1 行
数据库 'lylearnnet_syn' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。

对库lylearnnet_syn的日志执行清空(DUMP TRANSACTION lylearnnet_syn WITH NO_LOG)或截断(BACKUP LOG lylearnnet_syn WITH NO_LOG)操作后该问题依然存在。

翻阅了一些资料总结了解决的办法大致分为两种,其中各有优缺点:

truncate  table  表名

优点:速度比delete的速度快,且使用事务和系统日志少。  缺点:不带有任何判断条件,不写入日志


set rowcount 200
delete from 表名 where 条件

分批量删除,每次删除200~1000条数据,这种方法可解决数据库的报出的异常。


参考自:
http://www.51obj.cn/?p=183


关于SQL Server中的truncate:
http://www.cnblogs.com/luqingfei/articles/456186.html


SQL Server中truncate、delete和drop的异同点:
http://www.searchdatabase.com.cn/ShowContent_12034.htm
                                                                                                                                                            
分享到:
评论

相关推荐

    SqlServer日志清除专家

    - 日志增长策略:设置合适的自动增长阈值,避免一次性过大增长导致磁盘空间突增。 2. **日志清除策略**: - CHECKPOINT:通过检查点操作,将脏页写入数据文件并清理事务日志。 - TRUNCATE LOG:在简单恢复模式下...

    sqlserver日志清理器

    在SQL Server中,事务日志是数据库不可或缺的一部分,它记录了所有数据库的更改操作,对于数据恢复和事务一致性至关重要。然而,随着时间的推移,日志文件可能会变得非常大,这不仅会消耗大量硬盘空间,还可能影响...

    sqlserver日志清理

    在SQL Server数据库管理系统中,事务日志是记录所有数据更改的关键组件。它不仅用于支持事务的原子性和持久性,还用于实现数据库恢复操作。然而,随着系统的运行时间增长,事务日志可能会变得非常大,这不仅会占用...

    清理SQL Server日志释放文件空间的方法

    然而,有时候,日志文件可能会占用大量磁盘空间,尤其是在使用完整恢复模式时,由于需要保留所有事务日志以便于进行时间点恢复,这可能导致不必要的硬盘空间浪费。本篇文章将详细介绍如何在SQL Server中有效地清理...

    sqlserver 日志恢复方法(搞定drop和truncate)

    本文将通过一次实际的数据恢复案例来详细介绍SQL Server的日志恢复方法,特别是针对`DROP`和`TRUNCATE`操作后的数据恢复策略。 #### 二、SQL Server恢复模型与日志备份 在开始介绍具体的恢复方法之前,我们先了解...

    sqlserver 数据库备份

    尾部日志备份主要用于恢复过程中的最后一步,以捕获最后一次备份之后的事务日志信息。 **示例命令:** ```sql USE Master; GO BACKUP LOG NorthwindCS TO DISK = 'D:\Backup\NorthwindCS_20110721_Tail.bak' WITH ...

    SQL日志清理压缩工具

    事务日志用于跟踪数据库中的每一次事务,以便在系统崩溃或错误发生时能够进行回滚或前滚操作,确保数据的一致性。操作日志则是SQL Server代理服务记录的任务执行历史,用于监控和调试作业。 当SQL日志文件过大时,...

    SQL Server 2005中的保留字

    为了确保SQL语句的有效性和规范性,SQL Server 2005定义了一系列关键词(也称为保留字),这些关键词在SQL查询和命令中具有特定的含义,不能用作表名、列名或变量名等标识符,除非将其用引号括起来。 以下是对SQL ...

    SQL Server存储过程编写和优化措施

    - **批量插入与更新**:对于批量操作,如插入或更新大量数据,考虑使用批处理方式,一次处理多条记录,减少I/O操作次数。 #### 4. 适时使用索引 - **索引创建**:对于频繁查询的字段创建索引,特别是作为`WHERE`...

    数据批量删除/同时删除多条数据

    在执行前,确保已备份重要数据,或者使用`TRUNCATE TABLE`(不保留事务日志,速度更快,但不可回滚)而非`DELETE`,以防止误删。 3. **性能优化**:在大数据量下,使用索引和限制删除数量可以提升性能。比如,使用`...

    sqlserver数据库

    例如,使用`INSERT INTO`语句插入数据,`UPDATE`语句用于修改现有数据,而`DELETE`和`TRUNCATE TABLE`用于删除数据,两者区别在于`TRUNCATE`更快且不记录日志,适用于一次性清空表数据。`WHERE`子句用于指定操作的...

    浅谈SQL Server应用方法和技巧.pdf

    另一种方式是在查询分析器中执行CREATE TABLE命令,这种方法可以一次性编辑和执行多个命令,适用于一次性建立多个库表,并且可以将这些命令保存在文本文件中,便于后期编辑和执行。 库表的列数据类型需要根据实际...

    SQL Server笔试题解答

    SQL Server是一种广泛使用的关系型数据库管理系统(RDBMS),它提供了强大的数据管理和处理能力。在SQL Server笔试中,常见的题目类型包括单词解释、编写SQL语句、填空和问答题。下面将根据给出的部分内容详细解析...

    SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式

    - 简单恢复模式,也称为"Checkpoint with truncate log",在这种模式下,SQL Server会在检查点或备份后自动截断事务日志,删除所有非活动的日志记录,只保留用于实例启动时的实例恢复所需的小量日志。这使得日志...

    SQL Server误区30日谈 第20天 破坏日志备份链之后,需要一个完整备份来重新开始日志链

    3. **备份日志时使用NO_LOG或WITH TRUNCATE_ONLY选项**:虽然在SQL Server 2008中已经不再支持WITH TRUNCATE_ONLY选项,但在之前版本中使用这些选项会导致日志记录被截断,从而破坏日志链的连续性。 #### 日志链...

    SQL复习题参照题型

    6. **角色与权限**:角色是一种权限集合,允许将权限一次性授予一组用户。权限验证是SQL Server安全模型的一部分,还包括身份验证。 7. **事务类型**:事务分为本地事务(局限于单个数据库)和全局事务(跨越多个...

Global site tag (gtag.js) - Google Analytics