22,300
社区成员




set rowcount 5000
delete from Test.dbo.A where B<>'0'
大量删除记录日志产生比较多,可一次只删除100条,循环删除。
如果删除的超过了半数, 还不如将旧表改名,保留值插入到新表,新表作为正式表,旧表drop掉。
一般不太重要的库, 不建议将恢复模式改为完整日志, 简单日志即可, 这样日志可自动重用,不需要太多的维护。
alter database 数据库名 set recovery SIMPLE
alter database 数据库名 set recovery SIMPLE --设置为简单模式
dbcc shrinkfile('数据库日志名名') --like 数据库名_log
alter database 数据库名set recovery FULL --恢复模式
或者尝试循环删除数据,不一次性删除多条
use test
delete top (5000) from A where B<>0
[/quote]谢谢,先试下;WITH cte AS (
SELECT *,ROW_NUMBER()OVER(ORDER BY GETDATE()) AS num FROM A
)
DELETE FROM cte WHERE num<5000 AND B<>'0'
use test
delete top (5000) from A where B<>0
alter database 数据库名 set recovery SIMPLE --设置为简单模式
dbcc shrinkfile('数据库日志名名') --like 数据库名_log
alter database 数据库名set recovery FULL --恢复模式
或者尝试循环删除数据,不一次性删除多条
[/quote]循环删除?听起来有点深奥呀,有时间方便的话麻烦多指导下