日期:2014-05-18  浏览次数:20571 次

存储50幅图片,数据库文件撑到了1Gbytes,而整个图片文件夹的图片大小只有100Mbytes.
dbcc来shrink数据库也没有用,log文件从40M减小到1M,而MDF文件而是1G,没有任何的变化,但是在导入数据库前,这个数据库还只有150M,
后来将这此图片压缩,整个图片文件夹的大小减小到了2M,但是导入到数据库后的MDF达到了400M,难道这当中的250M全部用来存放了这2M的图片吗?

如果我的图片达到了1000,甚至100000,那数据库不就达到几T啦??
这还了得??

------解决方案--------------------
-- 获得所有表的表记录,和使用空间的SQL
declare @command1 varchar(8000),@postcommand varchar(8000)

exec sp_MSForEachTable
@precommand=N '
create table ##(
id int identity,
表名 sysname,
字段数 int,
记录数 int,
保留空间 Nvarchar(10),
使用空间 varchar(10),
索引使用空间 varchar(10),
未用空间 varchar(10)) ',
@command1=N 'insert ##(表名,记录数,保留空间,使用空间,索引使用空间,未用空间) exec sp_spaceused ' '? ' '
update ## set 字段数=(select count(*) from syscolumns where id=object_id( ' '? ' ')) where id=scope_identity() ',
@postcommand=N 'select * from ## order by 使用空间 desc drop table ## '
exec(@command1)
exec(@postcommand)

使用这个看看是那个表最大,不一定就是你的保存图片的表占用了大量的空间,也有可能是临时表哦.