SQL Server删除大批量数据,收缩数据库

admin 发布时间:2015-09-09 分类:.NET 阅读:5541次 3 条评论

今天发现公司数据库服务器磁盘空间满了,导致进行数据操作时候出现错误:

无法为数据库 '****' 中的对象 'dbo.tablename'.'PK_oid' 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。

开始清理数据库多余数据,在一个日志记录表下,每天会产生数十万的多余数据。决定清空这张表里的接近2000万的数据。

恩,delete tablename.....

执行了一分钟出现错误:数据库 '***' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。

结果立马暴库了...删除记录产生的日志太大了,刚刚清理的磁盘空间又不足了。

好吧,不能用delete。该用TRUNCATE,删除千万数据,0秒无压力。你们以为就完了吗...

执行结果还是刚刚那问题,数据库 '***' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。

看来得先清理日志文件了。

--截断事务日志 

backup   log   database_name   with   no_log

go

--收缩数据库 

dbcc   shrinkdatabase(database_name) 

go 


好了,再执行TRUNCATE删除。

删除后再执行一遍dbcc   shrinkdatabase(database_name) 数据收缩功能吧。

上一篇:JS字符串转ascii

下一篇:容易天黑的天

已有3条留言

发表评论:

◎欢迎您的参与讨论。