首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储50幅图片,数据库文件撑到了1Gbytes,而整个图片文件夹的图片大小只有100Mbytes.该怎么处理

2012-01-12 
存储50幅图片,数据库文件撑到了1Gbytes,而整个图片文件夹的图片大小只有100Mbytes.dbcc来shrink数据库也没

存储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)

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

热点排行