码迷,mamicode.com
首页 > 数据库 > 详细

SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的

时间:2016-08-10 21:02:46      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:

当你在SqlServer创建数据库的时候可以指定数据库文件的初始大小,比如下图中我们将新创建的数据库MyDB的大小设置成了1024MB

技术分享

 

那么你建好的数据库的确也就会占用1024MB左右的磁盘空间

技术分享

 

不过使用存储过程sp_spaceused可以看到其中有1021.85 MB的空间是MyDB占用着并未使用。

技术分享

 

于是我们在想是不是可以用DBCC ShrinkDatabase或DBCC ShrinkFile语句收缩未使用的数据库空间

dbcc shrinkdatabase(MyDB,10)


但是执行Shrink语句后我们发现数据库大小没有丝毫变化。。。

技术分享

 

并且在执行Shrink语句后得到提示

技术分享

 

这说明Sqlserver认为MyDB没有空间可以收缩。。。但是实际上我们通过存储过程sp_spaceused可以看到MyDB的确是有1021.85 MB的空间是没使用的。不能收缩数据库的原因其实是新建SqlServer数据库的时候指定的初始大小是不能被收缩掉的,要使用Alter Database语句或者在SMSS中重新指定MyDB的初始大小才能够收缩未使用的空间。

 

现在我们在SMSS中将MyDB的初始大小更改为800MB

技术分享

 

可以看到现在MyDB的大小的确是在800MB左右了

技术分享

 

然后现在再把MyDB的初始大小改回1024MB

技术分享

技术分享

 

然后此时再执行dbcc shrinkdatabase(‘MyDB‘,10),可以看到数据库大小变为了800MB左右,所以实际上shrinkdatabase语句只能把数据库收缩为 自数据库创建之初以来指定过的最小的初始文件大小,如果你的数据库第一次创建的时候初始大小就是1024MB,并且之后都没有人为调动过大小那么抱歉你的数据最小也就只能收缩到1024MB,尽管可能其中有1023MB都没有被实际用到。。。

技术分享

 

SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的

标签:

原文地址:http://www.cnblogs.com/OpenCoder/p/5758102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!