SQLServer2008 R2,创建文件组后,如何收缩数据库?跪求!!在线等

时间:2022-03-01 07:41:24
数据库是MSsqlserver2008R2版本,由于数据库中存的是图片,现在磁盘空间不够了,我将存在图片的表truncate 了,但是我看磁盘空间没有变化,然后我收缩数据库也没有变化,请问怎么才能释放空间?
  还有我的数据库,是分了文件组了,请问这个文件组可以直接删掉吗? 现在表示空的,但我看文件组大小还是那么大。

27 个解决方案

#1


引用 楼主 ioulzq 的回复:
数据库是MSsqlserver2008R2版本,由于数据库中存的是图片,现在磁盘空间不够了,我将存在图片的表truncate 了,但是我看磁盘空间没有变化,然后我收缩数据库也没有变化,请问怎么才能释放空间?
  还有我的数据库,是分了文件组了,请问这个文件组可以直接删掉吗? 现在表示空的,但我看文件组大小还是那么大。
              
           ……
收缩的时候有选择通过移到别的文件组来清空文件组,但是不建议直接删除。这种方式比较粗暴,SQLServer很生气、后果很严重

#2


另外你收缩的时候用收缩“文件”,而不要使用收缩“数据库”

#3


忘了说,重建一下大表的聚集索引

#4


引用 1 楼 DBA_Huangzj 的回复:
引用 楼主 ioulzq 的回复:数据库是MSsqlserver2008R2版本,由于数据库中存的是图片,现在磁盘空间不够了,我将存在图片的表truncate 了,但是我看磁盘空间没有变化,然后我收缩数据库也没有变化,请问怎么才能释放空间?
  还有我的数据库,是分了文件组了,请问这个文件组可以直接删掉吗? 现在表示空的,但我看文件组大小还是那么大。
        ……

我的磁盘只有40G的空间了,数据库文件有600G。另外在收缩的时候有一项“通过将数据迁移到同一文件组中的其他文件来清空文件”是什么意思?是点这个,来收缩吗?

#5


引用 4 楼 ioulzq 的回复:
引用 1 楼 DBA_Huangzj 的回复:引用 楼主 ioulzq 的回复:数据库是MSsqlserver2008R2版本,由于数据库中存的是图片,现在磁盘空间不够了,我将存在图片的表truncate 了,但是我看磁盘空间没有变化,然后我收缩数据库也没有变化,请问怎么才能释放空间?
  还有我的数据库,是分了文件组了,请问这个文件组可以直接删掉吗? 现在表示空的,但……
它的名字已经说的很清楚拉,把数据从一个文件组的文件中移到别的文件(同一个文件组),如果移动成功,这个文件就会空掉,你就可以进行删除操作

#6


引用 5 楼 DBA_Huangzj 的回复:
引用 4 楼 ioulzq 的回复:引用 1 楼 DBA_Huangzj 的回复:引用 楼主 ioulzq 的回复:数据库是MSsqlserver2008R2版本,由于数据库中存的是图片,现在磁盘空间不够了,我将存在图片的表truncate 了,但是我看磁盘空间没有变化,然后我收缩数据库也没有变化,请问怎么才能释放空间?
  还有我的数据库,是分了文件组了,请问这个文件……

就是说用这个可以收缩是吗?我的空间只有40G了 数据库文件有600G,空间够大吗?

#7


你说的数据库文件是指一个文件还是数据库总大小?

#8


2008有压缩功能,表级的。对大表先压缩一下,记得把恢复模式改成简单或者大容量日志先

#9


引用 8 楼 DBA_Huangzj 的回复:
2008有压缩功能,表级的。对大表先压缩一下,记得把恢复模式改成简单或者大容量日志先

怎么对表压缩啊,我说的数据库文件是指整个的数据库总的大小。

#10


SQLServer2008 R2,创建文件组后,如何收缩数据库?跪求!!在线等

如果你只有40G,那肯定放不下600G,除非你有一个文件组小于40G,就可以把这个文件组放到那个盘

#11


对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表

#12


引用 11 楼 ioulzq 的回复:
对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表
如果都连到同一个库,没必要这样分,表分区(按收费站号分区)反而更好,不过你目前问题是空间不足是吧?整个服务器只剩下40G?

#13


引用 12 楼 DBA_Huangzj 的回复:
引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都连到同一个库,没必要这样分,表分区(按收费站号分区)反而更好,不过你目前问题是空间不足是吧?整个服务器只剩下40G?

是的,本来是说要留3个月的数据,然后我新建一个图片表,将最近3个月的数据导进去了,然后将原来的图片表drop掉了,但数据库文件比原来更大了,然后我收缩数据,还是不行。
目前磁盘只剩下40G了,我现在怎么做啊 SQLServer2008 R2,创建文件组后,如何收缩数据库?跪求!!在线等

#14


引用 13 楼 ioulzq 的回复:
引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都连到同一个库,没必要这样分,表分区(按收费站号分区)反而更好,不过你目前问题是空间不足是吧?整个服务器只剩下40G?
是的……
你先检查是数据文件大还是日志文件大

#15


引用 14 楼 DBA_Huangzj 的回复:
引用 13 楼 ioulzq 的回复:引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都连到同一个库,没必要这样分,表分区(按收费站号分区)反而更好,不过你目前问题是空间不足……

数据文件,日志文件我已经收缩了 才几十M

#16


引用 15 楼 ioulzq 的回复:
引用 14 楼 DBA_Huangzj 的回复:引用 13 楼 ioulzq 的回复:引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都连到同一个库,没必要这样分,表分区(按……
你现在的数据库文件已经没有可收缩的空间了吗?重建一下前10个大表的聚集索引,如果没有聚集索引就创建

#17


引用 16 楼 DBA_Huangzj 的回复:
引用 15 楼 ioulzq 的回复:引用 14 楼 DBA_Huangzj 的回复:引用 13 楼 ioulzq 的回复:引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都……

为什么要重建索引呢?有什么作用?

#18


引用 17 楼 ioulzq 的回复:
引用 16 楼 DBA_Huangzj 的回复:引用 15 楼 ioulzq 的回复:引用 14 楼 DBA_Huangzj 的回复:引用 13 楼 ioulzq 的回复:引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个……
重建聚集索引,不是非聚集索引,这样能重新组织数据页,有可能空出很多空间,此时再进行收缩

#19


对表压缩的类型选择Page  是吧?

#20


重建了聚集索引,但没空出空间来

#21


SQLServer2008 R2,创建文件组后,如何收缩数据库?跪求!!在线等截图给我看看

#22




引用 21 楼 DBA_Huangzj 的回复:
截图给我看看

我选择“释放未使用的空间”不行是吧?
但是,我选择“在释放未使用的空间前重新组织页  将文件压缩到 166379MB(最小为102176MB)”

 这个166379是默认的,我可以按照数据库提供的最小值,压缩到102176MB?  压缩的很慢啊,
 

#23


截图不大方便,数据库在内网里面,截不出来

#24


这个166379MB 的大小,是expressway数据库文件的大小,分组的几个文件加起来有600G

#25


不要一次性收缩太大,不然几个小时都不行,建议每次减少500M。这样速度更快,几秒估计就一次了,你一下子压几十G,初步估计要4~5个小时,先停掉吧。

#26


引用 24 楼 ioulzq 的回复:
这个166379MB 的大小,是expressway数据库文件的大小,分组的几个文件加起来有600G
逐个文件收缩,就按你那个选项,但是别一次性收缩太多。切记切记

#27


谢谢,真的非常感谢!知道怎么做了

#1


引用 楼主 ioulzq 的回复:
数据库是MSsqlserver2008R2版本,由于数据库中存的是图片,现在磁盘空间不够了,我将存在图片的表truncate 了,但是我看磁盘空间没有变化,然后我收缩数据库也没有变化,请问怎么才能释放空间?
  还有我的数据库,是分了文件组了,请问这个文件组可以直接删掉吗? 现在表示空的,但我看文件组大小还是那么大。
              
           ……
收缩的时候有选择通过移到别的文件组来清空文件组,但是不建议直接删除。这种方式比较粗暴,SQLServer很生气、后果很严重

#2


另外你收缩的时候用收缩“文件”,而不要使用收缩“数据库”

#3


忘了说,重建一下大表的聚集索引

#4


引用 1 楼 DBA_Huangzj 的回复:
引用 楼主 ioulzq 的回复:数据库是MSsqlserver2008R2版本,由于数据库中存的是图片,现在磁盘空间不够了,我将存在图片的表truncate 了,但是我看磁盘空间没有变化,然后我收缩数据库也没有变化,请问怎么才能释放空间?
  还有我的数据库,是分了文件组了,请问这个文件组可以直接删掉吗? 现在表示空的,但我看文件组大小还是那么大。
        ……

我的磁盘只有40G的空间了,数据库文件有600G。另外在收缩的时候有一项“通过将数据迁移到同一文件组中的其他文件来清空文件”是什么意思?是点这个,来收缩吗?

#5


引用 4 楼 ioulzq 的回复:
引用 1 楼 DBA_Huangzj 的回复:引用 楼主 ioulzq 的回复:数据库是MSsqlserver2008R2版本,由于数据库中存的是图片,现在磁盘空间不够了,我将存在图片的表truncate 了,但是我看磁盘空间没有变化,然后我收缩数据库也没有变化,请问怎么才能释放空间?
  还有我的数据库,是分了文件组了,请问这个文件组可以直接删掉吗? 现在表示空的,但……
它的名字已经说的很清楚拉,把数据从一个文件组的文件中移到别的文件(同一个文件组),如果移动成功,这个文件就会空掉,你就可以进行删除操作

#6


引用 5 楼 DBA_Huangzj 的回复:
引用 4 楼 ioulzq 的回复:引用 1 楼 DBA_Huangzj 的回复:引用 楼主 ioulzq 的回复:数据库是MSsqlserver2008R2版本,由于数据库中存的是图片,现在磁盘空间不够了,我将存在图片的表truncate 了,但是我看磁盘空间没有变化,然后我收缩数据库也没有变化,请问怎么才能释放空间?
  还有我的数据库,是分了文件组了,请问这个文件……

就是说用这个可以收缩是吗?我的空间只有40G了 数据库文件有600G,空间够大吗?

#7


你说的数据库文件是指一个文件还是数据库总大小?

#8


2008有压缩功能,表级的。对大表先压缩一下,记得把恢复模式改成简单或者大容量日志先

#9


引用 8 楼 DBA_Huangzj 的回复:
2008有压缩功能,表级的。对大表先压缩一下,记得把恢复模式改成简单或者大容量日志先

怎么对表压缩啊,我说的数据库文件是指整个的数据库总的大小。

#10


SQLServer2008 R2,创建文件组后,如何收缩数据库?跪求!!在线等

如果你只有40G,那肯定放不下600G,除非你有一个文件组小于40G,就可以把这个文件组放到那个盘

#11


对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表

#12


引用 11 楼 ioulzq 的回复:
对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表
如果都连到同一个库,没必要这样分,表分区(按收费站号分区)反而更好,不过你目前问题是空间不足是吧?整个服务器只剩下40G?

#13


引用 12 楼 DBA_Huangzj 的回复:
引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都连到同一个库,没必要这样分,表分区(按收费站号分区)反而更好,不过你目前问题是空间不足是吧?整个服务器只剩下40G?

是的,本来是说要留3个月的数据,然后我新建一个图片表,将最近3个月的数据导进去了,然后将原来的图片表drop掉了,但数据库文件比原来更大了,然后我收缩数据,还是不行。
目前磁盘只剩下40G了,我现在怎么做啊 SQLServer2008 R2,创建文件组后,如何收缩数据库?跪求!!在线等

#14


引用 13 楼 ioulzq 的回复:
引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都连到同一个库,没必要这样分,表分区(按收费站号分区)反而更好,不过你目前问题是空间不足是吧?整个服务器只剩下40G?
是的……
你先检查是数据文件大还是日志文件大

#15


引用 14 楼 DBA_Huangzj 的回复:
引用 13 楼 ioulzq 的回复:引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都连到同一个库,没必要这样分,表分区(按收费站号分区)反而更好,不过你目前问题是空间不足……

数据文件,日志文件我已经收缩了 才几十M

#16


引用 15 楼 ioulzq 的回复:
引用 14 楼 DBA_Huangzj 的回复:引用 13 楼 ioulzq 的回复:引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都连到同一个库,没必要这样分,表分区(按……
你现在的数据库文件已经没有可收缩的空间了吗?重建一下前10个大表的聚集索引,如果没有聚集索引就创建

#17


引用 16 楼 DBA_Huangzj 的回复:
引用 15 楼 ioulzq 的回复:引用 14 楼 DBA_Huangzj 的回复:引用 13 楼 ioulzq 的回复:引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个是叫分组吗,关键是这一个文件里面包含几个表如果都……

为什么要重建索引呢?有什么作用?

#18


引用 17 楼 ioulzq 的回复:
引用 16 楼 DBA_Huangzj 的回复:引用 15 楼 ioulzq 的回复:引用 14 楼 DBA_Huangzj 的回复:引用 13 楼 ioulzq 的回复:引用 12 楼 DBA_Huangzj 的回复:引用 11 楼 ioulzq 的回复:对了,大神,我跟你说下我的数据库的情况,是收费站存储数据的一个库,比如有12个收费站,按照站号分成了13个文件,这个……
重建聚集索引,不是非聚集索引,这样能重新组织数据页,有可能空出很多空间,此时再进行收缩

#19


对表压缩的类型选择Page  是吧?

#20


重建了聚集索引,但没空出空间来

#21


SQLServer2008 R2,创建文件组后,如何收缩数据库?跪求!!在线等截图给我看看

#22




引用 21 楼 DBA_Huangzj 的回复:
截图给我看看

我选择“释放未使用的空间”不行是吧?
但是,我选择“在释放未使用的空间前重新组织页  将文件压缩到 166379MB(最小为102176MB)”

 这个166379是默认的,我可以按照数据库提供的最小值,压缩到102176MB?  压缩的很慢啊,
 

#23


截图不大方便,数据库在内网里面,截不出来

#24


这个166379MB 的大小,是expressway数据库文件的大小,分组的几个文件加起来有600G

#25


不要一次性收缩太大,不然几个小时都不行,建议每次减少500M。这样速度更快,几秒估计就一次了,你一下子压几十G,初步估计要4~5个小时,先停掉吧。

#26


引用 24 楼 ioulzq 的回复:
这个166379MB 的大小,是expressway数据库文件的大小,分组的几个文件加起来有600G
逐个文件收缩,就按你那个选项,但是别一次性收缩太多。切记切记

#27


谢谢,真的非常感谢!知道怎么做了