为什么把SQL SERVER的数据库记录都已经删除了,数据库文件的大小还没有变?

为什么把SQL SERVER的数据库所用到的表的记录都已经删除了,数据库文件的大小还没有变?怎么减肥?请赐教!!急!!
[59 byte] By [kyqSimon-Simon] at [2008-1-9]
# 1
企业管理器 ,数据库, 收缩数据库 收缩文件
dabaicai-烈士暮年 at 2007-10-19 > top of Msdn China Tech,Delphi,非技术区...
# 2
TRUNCATE TABLE name
删除表中的所有行,而不记录单个行删除操作。
注意这是删除所有记录,好像是不能恢复哦。小心使用。

再 收缩数据库
kinglh-小晖 at 2007-10-19 > top of Msdn China Tech,Delphi,非技术区...
# 3
为什么把SQL SERVER的数据库所用到的表的记录都已经删除了,数据库文件的大小还没有变

=============

没有变还算好, 还有删除所有记录后,数据库反而变大了? 为什么呢? 呵呵日志变大了。
sanmaotuo-老冯 at 2007-10-19 > top of Msdn China Tech,Delphi,非技术区...
# 4
dbms申请的数据文件不会自动释放回去;
需要对数据库进行收缩
47522341-睡到8:30 at 2007-10-19 > top of Msdn China Tech,Delphi,非技术区...
# 5
--清空和截断数据库事物日志,联机处理,不用停止数据库服务
--1.45G的日志,时间:1分36秒
declare @strDbName varchar(32),@sql varchar(200)

set @strDbName = 'www_sinobull_net_cn' --需要处理的数据库名

set @sql = 'dump transaction ['+@strDbName+'] with no_log'+char(10)+char(13)
set @sql = @sql +
'backup log ['+@strDbName+'] with no_log'+char(10)+char(13)
set @sql = @sql +
'DBCC SHRINKDATABASE(['+@strDbName+'])'
exec(@sql)
# 6
上面的最后一步就是收缩数据库
# 7
其实数据库中最大的是日志了,所以不是删除的数据数据库就会小去的,一定要删除日志的,怎么删?就是上面说的,收缩数据库,不过收缩数据库前先将数据库的属性中的选项中的故障还原设为'简单'。
nippycn at 2007-10-19 > top of Msdn China Tech,Delphi,非技术区...
# 8
backup log dbname with no_log
然后去企业管理器里面,按住这个数据库,收缩
bjtwtx-云淡风轻 at 2007-10-19 > top of Msdn China Tech,Delphi,非技术区...
# 9
收缩下就可以了,好比access的压缩
delphai at 2007-10-19 > top of Msdn China Tech,Delphi,非技术区...