如何收缩SQL Server 2000的数据库(100分)

  • 主题发起人 主题发起人 JohnsonGuo
  • 开始时间 开始时间
J

JohnsonGuo

Unregistered / Unconfirmed
GUEST, unregistred user!
本人现使用SQL Server2000作为后台数据库,为某公司开发了一套ERP系统。该系统
已经启用。在使用过程中,发现数据库占用的磁盘空间不断增大。查看数据库属性,发觉
数据文件为106MB,事务日志为2GB(其中显示2GB中只有300MB在使用,1700MB空闲)!

问:
1 既然事务日志只有300MB在使用,为何要占用2GB的空间?
2 查看帮助文件,发觉事务日志用于记录用户对数据库的操作。如果是这样,理应在一段
时间过后,可以忽略过期的事务日志!究竟如何操作?
3 我尝试过使用SQL Server提供的“收缩数据库”功能,但使用后得到的结论是:M$好像
根本没有实现此功能,只是作个界面,当用户按下“确定”按钮后Sleep几秒钟,弹个
对话框出来说完成而已。“收缩”后磁盘空间的占用完全不变(即根本没有收缩过),
有时事务日志还会增大!请问是否我的操作有误,该如何操作?
 
确认没有其他的用户在使用数据库
最好先停一下,在启动数据库
如下:
backup log 数据库名称 with no_log
尝试一下
 
用bcp命令把数据库中的记录都导出来保存到另一台机器
然后用truncate table tablename 的方法把所有记录清空
然后执行 dump transcation dbname with no_log
发现文件log已显著减少,再用bcp命令导入,导入log文件又增大
但再用dump transaction dbname with no_log,效果不仅试日志空间减少,
日志文件的size也显著减少
 
用截取事务日志,试一下,应该可以的,也可以直接删除日志文件,
SQL2000有自动恢复上一次事务日志的功能的,我用过的
 
用SQL Server控制台选所要的数据库
右键 ALL TASK->shink database 便OK
 
数据库右键->所有任务->收缩数据库
不需要暂停数据库服务
 
up 那锦渤
 
数据库右键->所有任务->收缩数据库->文件->收缩文件至 指定大小即可
 
To 那锦渤:
我的问题是如何收缩数据库,不是如何不带事务日志而备份数据库.

To ugvanxk:
您的办法似乎可行,但数据库中很多表都存在外部键,在外部键的表是不能使用truncate table的.该怎么办?

To tangzwei, luoshanliang, QuickSilver:
请看一下我的问题,我也试过此功能,不ok!!!

 
试试

1、分离数据库。
2、给LDF文件改名,再进行附加数据库,这时会生成一个新的LDF日志文件。
3、运行一段时间无误的话,再删除旧的LDF日志文件。
 
你在企业管理器中做个备份计划,每隔段时间备份数据库与逻辑日志文件,数据库与逻辑日
志文件空间的增长都设成是自动增长,就行了,我这里就是这么做的。
 
将数据库设置为自动收缩
如何更改数据库的配置设置(企业管理器)
1、更改数据库的配置设置
2、展开服务器组,然后展开服务器。
3、展开"数据库"文件夹,右击要更改的数据库,然后单击"属性"命令。
4、单击"选项"选项卡,再选择或清除要更改的配置设置。
 
針對現在的情況,照quicksilver的就行
1、分离数据库。
2、给LDF文件改名,再进行附加数据库,这时会生成一个新的LDF日志文件。
3、运行一段时间无误的话,再删除旧的LDF日志文件。

不過,要想長期避免此問題,你要設定一計劃,
每日自動備份資料庫,交易檔,壓縮資料庫,
這樣,就可以高枕無憂了.
如不能解決,可mail 我;
 
多人接受答案了。
 
后退
顶部