SQL 数据库文件超级大,而且增长速度过快!

北京朝五晚九 2008-08-29 11:24:12
目前数据库文件(.MDF)占用空间超过有48G,切增长速度很快。已经对日志文件进行了压缩。
在查询分析器中用 exec sp_spaceused 语句进行查询,输出结果如下:

database_name database_size unallocated_space
ecology 48770.00M 1370.97 MB

reserved data index_size unused
48504160 KB 7017272 KB 270776 KB 41216112 KB

请各位大虾帮助察看。谢谢!
...全文
3031 52 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
52 条回复
切换为时间正序
请发表友善的回复…
发表回复
北京朝五晚九 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 51 楼 ldslove 的回复:]
引用 43 楼 Haiwer 的回复:
引用 3 楼 lirunjie1124 的回复:
能看看问题在回答吗?
说了一大堆,看了老半天,一看答非所问!


看来楼主没有测试1楼的做法,先截断日志再收缩数据库应该能收缩的,41G的未使用空间


刚才顶错了!
[/Quote]

很弓虽大!!
东那个升 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 Haiwer 的回复:]
引用 3 楼 lirunjie1124 的回复:
能看看问题在回答吗?
说了一大堆,看了老半天,一看答非所问!


看来楼主没有测试1楼的做法,先截断日志再收缩数据库应该能收缩的,41G的未使用空间
[/Quote]

刚才顶错了!
东那个升 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 tianhuo_soft 的回复:]
引用 24 楼 lirunjie1124 的回复:
我收缩过好几次了,还是不行,急死我了都要!


收缩文件 下面有一个“文件”按钮 点击这个按钮 里面选择对数据库文件收缩
在那里面收缩
[/Quote]


顶!
北京朝五晚九 2008-09-27
  • 打赏
  • 举报
回复
我新建立一个数据库,把原来的库导入到这个库中,大小是2个G左右,但是我发现没有以前的存储过程。
请问怎么样才能无差别的都导过去呀?
这样能有效地减少空间吗?



113244 2008-09-13
  • 打赏
  • 举报
回复
紧张。期待。关注。
hothot66 2008-09-09
  • 打赏
  • 举报
回复
把原来的数据库备份,然后新建一个数据库,还原。 东西坏了现在首先不是修首先是换新的不能换新的才考虑修旧的。
tianhuo_soft 2008-09-04
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 lirunjie1124 的回复:]
我收缩过好几次了,还是不行,急死我了都要!
[/Quote]

收缩文件 下面有一个“文件”按钮 点击这个按钮 里面选择对数据库文件收缩
在那里面收缩
zheninchangjiang 2008-09-04
  • 打赏
  • 举报
回复
做个维护计划,把索引重建.
zheninchangjiang 2008-09-04
  • 打赏
  • 举报
回复
空数据库使用状况如下:
database_name database_size unallocated space
-------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------
datas 1001.00 MB 999.46 MB


reserved data index_size unused
------------------ ------------------ ------------------ ------------------
552 KB 160 KB 288 KB 104 KB

select * into test2 from test后结果如下:
database_name database_size unallocated space
-------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------
datas 1001.00 MB 999.38 MB


reserved data index_size unused
------------------ ------------------ ------------------ ------------------
632 KB 176 KB 296 KB 160 KB

drop table test2
select * into test2 from test where 1=2
sp_spaceused
database_name database_size unallocated space
-------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------
datas 1001.00 MB 999.46 MB


reserved data index_size unused
------------------ ------------------ ------------------ ------------------
552 KB 160 KB 288 KB 104 KB

insert into test2 select * from test
sp_spaceused
database_name database_size unallocated space
-------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------
datas 1001.00 MB 999.45 MB


reserved data index_size unused
------------------ ------------------ ------------------ ------------------
568 KB 168 KB 296 KB 104 KB

未用空间大小没有增加,未用空间同样是如同第一项reserved一样是保留的,因此就无法收缩,但是想办法把unused数量减小,那么unallocated就会增大,可以收缩的空间就大了.


zheninchangjiang 2008-09-04
  • 打赏
  • 举报
回复
在查询分析器中运行
sp_msforeachtable 'sp_spaceused ''?'''
我试着用select * into test2 from test ,结果使用执行上述SQL发现结果如下:
name rows reserved data index_size unused
-------------------------------------------------------------------------------------------------------------------------------- ----------- ------------------ ------------------ ------------------ ------------------
test 21 16 KB 8 KB 8 KB 0 KB

name rows reserved data index_size unused
-------------------------------------------------------------------------------------------------------------------------------- ----------- ------------------ ------------------ ------------------ ------------------
test2 21 80 KB 16 KB 8 KB 56 KB



zheninchangjiang 2008-09-04
  • 打赏
  • 举报
回复
另有可能就是频繁的使用非临时表当作临时表使用.
Alysn 2008-09-04
  • 打赏
  • 举报
回复
只要硬盘足够大,查询速度不慢,有多少G都可以不管
Garnett_KG 2008-09-04
  • 打赏
  • 举报
回复

上面的同学给那那么多的解决方案, 还没有解决吗?

你再看一下空间使用率:

sp_spaceused null,true
qiejinxing 2008-09-04
  • 打赏
  • 举报
回复
DUMP TRANSACTION [数据库名] WITH NO_LOG
lmj352229 2008-09-04
  • 打赏
  • 举报
回复
太好了!正需要,先顶一个再仔细看!!
adair 2008-09-04
  • 打赏
  • 举报
回复
看看有什么不用的数据,清除下数据,再收缩数据库吧
昵称被占用了 2008-09-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lirunjie1124 的回复:]
能看看问题在回答吗?
说了一大堆,看了老半天,一看答非所问!
[/Quote]

看来楼主没有测试1楼的做法,先截断日志再收缩数据库应该能收缩的,41G的未使用空间
Herb2 2008-09-03
  • 打赏
  • 举报
回复
个人觉得应该是两个方面造成的。
一个方面是临时空间过大:
可以在重启SQL服务后,立即进行数据库收缩。
另一个方面是表空间导致:
可以分析一下表空间,然后针对性的重建索引、导表等操作。

切记,这些操作都应在没有业务运行的情况下开展,并强烈建议对数据库进行备份后,
通过备份的数据库在其它机器上进行操作,确保业务的正常开展。

推荐:http://topic.csdn.net/u/20080625/09/1201904e-d32f-4c4d-9bfc-e0195ba7dd24.html
下面的代码是查看表空间的。
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 

create table tablespaceinfo --创建临时表
(nameinfo varchar(50) , --表名
rowsinfo int , --表中现有的行数
reserved varchar(20) , --表空间总量
datainfo varchar(20) , --表中数据的空间量
index_size varchar(20) , --表中索引使用的空间量
unused varchar(20) ) --表中未用的空间量

delete from tablespaceinfo

declare @tablename varchar(255)
declare @cmdsql varchar(500)

DECLARE Info_cursor CURSOR FOR
select name
from dbo.sysobjects where OBJECTPROPERTY(id, N'IsTable') = 1
and name not like N'#%%' order by name

OPEN Info_cursor

FETCH NEXT FROM Info_cursor
INTO @tablename

WHILE @@FETCH_STATUS = 0
BEGIN

if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
execute sp_executesql
N'insert into tablespaceinfo exec sp_spaceused @tbname',
N'@tbname varchar(255)',
@tbname = @tablename

FETCH NEXT FROM Info_cursor
INTO @tablename
END

CLOSE Info_cursor
DEALLOCATE Info_cursor
GO


--表空间信息
select *
from tablespaceinfo
order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc
Novelty 2008-09-03
  • 打赏
  • 举报
回复
找一下是哪个表占用空间大,然后分析这个表的数据从何而来。

接着就给泛微打电话

北京朝五晚九 2008-09-03
  • 打赏
  • 举报
回复
1.我备份并恢复过数据库,空间并有忧改变
2.我在企业管理器压缩过数据库,也没有什么改变。(如果在查询分析器 用语句压缩是不是好一些?如果好一些,谁能告诉我语句,我对sql不太懂!谢谢)
3.OA的附件都是存在于 硬盘的不是在数据库。
加载更多回复(32)

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧