SQL Server 2000数据库收缩

来源:百度知道 编辑:UC知道 时间:2024/06/17 17:06:09
公司的数据库所在盘符空间为600G,可用空间为9M(该盘符只装了数据文件以及日志文件),数据文件大小为598G,数据库可用空间为300多G,通过企业管理器我把数据库进行了文件收缩,设置收缩至300G左右,可已经收缩了2天了,数据库还是没有收缩完成。看任务管理器里Server的CPU占用还是有的。
想问下大家
1、是不是我的数据库现在收缩失败了啊?
2、大家有过对大型数据库的收缩经验吗?时间怎么这么久啊?
3、为什么我按百分比收缩时总是不成功?和盘符所剩空间有关系么?
4、数据库收缩的简单原理是什么啊?和盘符所剩空间有关系么?
麻烦大家了。
数据文件598G(可用300多G),日志文件2G(可用1.9G),时间长那是该有多长呢?

1、是不是我的数据库现在收缩失败了啊?
答:你的数据库收缩还没有完全失败,但已经可以视为失败,因为要做完收缩遥遥无期,需要的时间将十分漫长,具体原因见第三问。

2、大家有过对大型数据库的收缩经验吗?时间怎么这么久啊?
答:数据库的收缩时间与数据库大小是成正比的,数据库越大,收缩时间越长。所以建议要定时进行数据库收缩,每年一次或几个月一次,依数据库增长速度而定。

3、为什么我按百分比收缩时总是不成功?和盘符所剩空间有关系么?
答:不论是按百分比收缩还是按空间大小进行收缩,都要求数据库所在磁盘预留一定的空间,最好在15%以上。在数据库进行收缩时,系统将把这部分预留空间作为缓冲区,用来保存和整理数据库中的数据,然后再把整理过的数据写回数据库。像你说的这种情况,数据文件大小为598G,可用空间为9M,基本无法进行有效的数据库收缩。建议你把数据库文件解挂后,复制到750G以上的大容量硬盘中,重新附加数据库后再进行收缩。

4、数据库收缩的简单原理是什么啊?和盘符所剩空间有关系么?
答:数据库收缩的简单原理有两条,一是清理日志,因为日志记录的是数据库的历史操作,在一段时间后,如果没有保存价值可以清除;二是清理空白空间,这种空间是删除数据表(一般是临时表)后造成的,数据表删除后,数据库空间不会自动缩小,所以数据文件就会越来越大。和盘符所剩空间的关系,第三问已经回答了。

盘符空间只有600G,可数据文件有598G,以致可用空间只有9M,一是可用空间太小;二是数据文件这么大,收缩操作时间肯定很长,且这期间不能做其它数据库操作;三,SQL Server 2000数据库收缩没有按百分比收缩呀,只有将文件压缩至多少M(或G);四、数据库文件收缩是应用奇偶校验原理将文件占用空间进行压缩,以释放更多可用空间,从理论上说,与盘符所剩空间没多大关系,但你只剩下9M,很多操作本身是无法完成的。