sqlserve 数据库8G log文件也有10来g 按日期删除 方法

数据库存了几年的数据没有维护过,数据庞大,日志文件也不小,如何清理不需要的数据呢

首先考虑的肯定是某个日期之前的数据清除掉

delete from 表名 where cast(字段名 as datetime)<'2018-07-21' 

数据库很大 上边这条指令是不行滴

因为每次删除都会产生较大log 文件,还不等进行删除时,日志文件十几个G了,无法使用此操作

用下边的方式日志文件不会增加, 处理速度在接受范围内,一个大表基本几分钟搞定

1。如果您在执行 Delete Table1 where Time < '2004-03-01' 由于涉及的记录比较多,所以日志记录也相应很大(3-4G),如果可行,我建议您尝试以下方式:

-- 选出您所需要保留的记录到新的表。如果您使用 Full Recovery Mode
-- 根据SELECT INTO的记录数,日志可能会比较大
Select * into Table2 From Table1 Where Time > = '2004-03-01'

-- 然后直接Truncate Table1。无论何种恢复模式都不会进行日志记录
Truncate table Table1

-- 最后对Table2进行改名为Table1
EC sp_rename 'Table2', 'Table1'


https://blog.csdn.net/hzp666/article/details/82801599

我是这么弄的

USE [master]
GO
ALTER DATABASE DFTDDB SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DFTDDB SET RECOVERY SIMPLE
GO
USE DFTDDB
GO
Select * into Table2 From Table1 Where Time > = '2004-03-01'  //此处换成自己的
GO 
USE [master]
GO
ALTER DATABASE DFTDDB SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DFTDDB SET RECOVERY FULL GO

先把sqlserver 编程simple模式  进行操作,处理完了再变换过来

 

原文地址:https://www.cnblogs.com/zuochanzi/p/11283441.html