如何在Sql-server中删除大量数据?

bluemouse 2003-05-21 03:54:54
数据库的一个表中有大约500万行数据需要部分删除,但如果简单的执行delete,速度则很慢,几乎不能完成,似乎是写事务日志占用的资源。请问,如何解决这个问题,或者说在delete过程中强制sqlserver不记录日志?

先谢谢了!
...全文
412 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
erigido 2003-05-22
  • 打赏
  • 举报
回复
gz
xlhl 2003-05-22
  • 打赏
  • 举报
回复
mark
pengdali 2003-05-22
  • 打赏
  • 举报
回复
SQLServer现有的版本delete就是要写日志的!
yydy 2003-05-22
  • 打赏
  • 举报
回复
先备份保留数据
重新建表
恢复保留数据
一点想法,不知可不可行
bluemouse 2003-05-22
  • 打赏
  • 举报
回复
各位老大,强调一下,我的要求是“部分删除”,多谢!
pengdali 2003-05-21
  • 打赏
  • 举报
回复
exec sp_dboption yourDB,'trunc. log on chkpt.',true
就可以在INSERT,UPDATE,DELETE时不写日志了

to 小黑你没搞错吧!这是截断日志,且只有master可以用

trunc. log on chkpt. 当为 true 时,如果数据库处于日志截断模式,则检查点将截断日志中非活动的部分。只能为 master 数据库设置此选项。
pengdali 2003-05-21
  • 打赏
  • 举报
回复
TRUNCATE TABLE 表名

不会写日志
happydreamer 2003-05-21
  • 打赏
  • 举报
回复
TRUNCATE TABLE 只在事务日志中记录页的释放

可以这样
1.数据库恢复模式改为“简单”模式
2.用bcp将原表需需保留数据到导出b;
3.设置数据库trunc. log on chkp.为true;
4.truncate 原表;
5.bcp b到原表;
6.设置数据库trunc. log on chkp.为false.



exec sp_dboption yourDB,'trunc. log on chkpt.',true
就可以在INSERT,UPDATE,DELETE时不写日志了

lucie 2003-05-21
  • 打赏
  • 举报
回复
另外建一个表,将现有表的结构导过去,然后将有的表删除,再重命名新表就OK了
hater 2003-05-21
  • 打赏
  • 举报
回复
TRUNCATE TABLE table_name
很快
如果一个表中数据都不要了也可以把表新建一次
SORROWAPPLE 2003-05-21
  • 打赏
  • 举报
回复
TRUNCATE TABLE table_name

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧