当前位置:编程学习 > C#/ASP.NET >>

请问兄弟们要如何真正收缩数据库文件,急啊,先谢了!

sql2005数据文件已经快100G了,在数据库的右键:任务--收缩---文件收缩,数据文件收缩提示成功,重复多次文件大小还是没变,
请问兄弟们要如何真正收缩数据库文件,硬盘不够大了,急啊,先谢了! 
 
 
--------------------编程问答-------------------- DUMP TRANSACTION 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 WITH NO_LOG
DBCC SHRINKDATABASE(数据库名)
EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE'  --------------------编程问答-------------------- 那要看数据库本身的数据量
一般来说,数据库删除数据之后并不真正的释放空间,收缩数据库可以将这部分的空间释放出来
如果数据库本身的数据就占有了100G,那么这种收缩就没有用了
看看你的数据库里面是不是有大量的流数据

如果不是,看一下ldf文件占用的空间,如果是ldf占用的话,可以将ldf文件备份到别的地方
然后将数据库detach,删除ldf,重新attach

具体要看产生的原因是什么 --------------------编程问答--------------------
引用 2 楼 shinstone 的回复:
那要看数据库本身的数据量
一般来说,数据库删除数据之后并不真正的释放空间,收缩数据库可以将这部分的空间释放出来
如果数据库本身的数据就占有了100G,那么这种收缩就没有用了
看看你的数据库里面是不是有大量的流数据

如果不是,看一下ldf文件占用的空间,如果是ldf占用的话,可以将ldf文件备份到别的地方
然后将数据库detach,删除ldf,重新attach

具体要看产生的原因……


谢谢shinstone
数据记录已经删除,收缩文件提示有99%可用空间,提示收缩成功,但mdf文件没有变小 --------------------编程问答-------------------- --------------------编程问答-------------------- 收缩只是一种手段
分析增长原因才是根本,才能对病症下药
-----------------------------------
另:问题发错地方了
引用 2 楼 shinstone 的回复:
那要看数据库本身的数据量
一般来说,数据库删除数据之后并不真正的释放空间,收缩数据库可以将这部分的空间释放出来
如果数据库本身的数据就占有了100G,那么这种收缩就没有用了
看看你的数据库里面是不是有大量的流数据

如果不是,看一下ldf文件占用的空间,如果是ldf占用的话,可以将ldf文件备份到别的地方
然后将数据库detach,删除ldf,重新attach

具体要看产生的原因……
--------------------编程问答--------------------
引用 1 楼 benyouyong 的回复:
DUMP TRANSACTION 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 WITH NO_LOG
DBCC SHRINKDATABASE(数据库名)
EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE'


兄弟,按您的方法运行后文件大小还是没改变 --------------------编程问答-------------------- 很奇怪,以前我删除数据记录之后,收缩是有作用的 --------------------编程问答--------------------
引用 5 楼 macrottian 的回复:
收缩只是一种手段
分析增长原因才是根本,才能对病症下药


谢谢,

公司的数据每天的数据量很大,我要复制这数据库到分公司用,那个服务器最大硬盘是40G,删除所有记录后,收缩成功文件还是没有变化






-----------------------------------
另:问题发错地方了

引用 2 楼 shinstone 的回复:
那要看数据库本身的数据量
一般来说,数据库删除数据之后并不真正的释放空间,收缩数据库可以将这部分的空间释放出来
如果数据库本身的数据就占有了100G,那么这种收缩就没有用了
看看你的数据库……
--------------------编程问答-------------------- 难道是疑难杂证 --------------------编程问答-------------------- 日志文件只有1G,几个记录大的表删除也收缩后没变小数据库文件 --------------------编程问答--------------------
引用 6 楼 brightfran 的回复:
引用 1 楼 benyouyong 的回复:
DUMP TRANSACTION 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 WITH NO_LOG
DBCC SHRINKDATABASE(数据库名)
EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE'


兄弟,按您的方法运行后文件大小还是没改变


这是压缩数据日志文件的.我以为你要减小日志文件大小的.
一般如果空间不足.优先压缩日志文件.毕竟那么大的数据量在哪里呢.收缩数据MDF文件的大小是有限的


补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,