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

关于SQL的MDF文件大小问题,
各位大侠,小弟想请教各位一个问题,SQL里面删除数据后,MDF的大小并没有减少,有没有办法能删除数据后,mdf文件能跟着减少。


------解决方案--------------------
收缩数据库
SQL Server 2000 自动收缩有大量可用空间的数据库。该进程仅适用于那些 autoshrink 选项设置为 true 的数据库。服务器定期检查每个数据库中的空间使用情况。如果发现数据库中有大量闲置空间,而且它的 autoshrink 选项设置为 true,SQL Server 就缩小该数据库中的文件大小。也可以使用 SQL Server 企业管理器或 DBCC SHRINKDATABASE 和 DBCC SHRINKFILE 语句,手工收缩数据库中的文件。

文件始终从末端开始收缩。例如,如果有个 5 GB 的文件并将 DBCC SHRINKDB 语句中的 target_size 指定为 4GB,则 SQL Server 将从文件的最后一个 1 GB 开始释放尽可能多的空间。如果文件中被释放的部分包含使用过的页,则 SQL Server 首先将这些页重新定位到保留的部分。只能将数据库收缩到没有剩余的可用空间为止。例如,某个 5GB 的数据库有 4 GB 的数据并且 DBCC SHRINKDATABASE 语句的 target_size 被指定为 3 GB,则只释放 1 GB。

如果 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 语句无法收回日志文件中的所有空间,该语句将发出信息,指示必须执行什么操作以释放更多符合条件的空间。有关收缩日志文件的更多信息,

------解决方案--------------------
如何收缩数据库(企业管理器)
收缩数据库 

展开服务器组,然后展开服务器。


展开"数据库"文件夹,右击要收缩的数据库,指向"所有任务",然后单击"收缩数据库"命令。


要指定数据库的收缩量,请从以下选项中选择: 
在"收缩后文件中的最大可用空间"中输入收缩后数据库中剩余的可用空间量。以"数据库大小,可用空间"值作为依据。


选择"在收缩前将页移到文件起始位置",使释放的文件空间保留在数据库文件中,并使包含数据的页移到数据库文件的起始位置。 
单击"调度"命令创建或更改自动收缩数据库的频率和时间。


如果要收缩个别的数据库文件,请单击"收缩文件"。 


说明 不能将数据库的大小收缩到小于 model 数据库的大小。