数据库存了几年的数据没有维护过,数据庞大,日志文件也不小,如何清理不需要的数据呢
首先考虑的肯定是某个日期之前的数据清除掉
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模式 进行操作,处理完了再变换过来