admin 发布时间:2015-09-09 分类:.NET 阅读:5977次 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) 数据收缩功能吧。
关键字词: SQL Server删除大批量数据收缩数据库
上一篇:JS字符串转ascii
下一篇:容易天黑的天
发布于 2015-11-13 16:57:06 回复该评论
发布于 2015-09-10 23:40:26 回复该评论
发布于 2015-09-13 11:51:36 回复该评论
发表评论:
◎欢迎您的参与讨论。