1.在SQL Server企业管理器中,右击要收缩的数据库,在弹出的菜单中选择"所有任务"子菜单下的"收缩数据库"项。
![](http://michaelwang.blog.51cto.com/attachment/200801/200801161200463638210.jpg?x-oss-process=image/resize,w_1400/format,webp)
2.在"收缩后文件中的最大可用空间"中输入收缩后数据库中剩余的可用空间量。选择“在收缩前将页移到文件起始位置”,使释放的文件空间保留在数据库文件中,并使包含数据的页移到数据库文件的起始位置。
![](http://michaelwang.blog.51cto.com/attachment/200801/200801161200463678585.jpg?x-oss-process=image/resize,w_1400/format,webp)
3.点击“调度”命令创建或更改自动收缩数据库的频率和时间。点击更改按钮对调度进行具体的设置。在弹出的窗口中选择调度发生的时机。选择“反复出现”,点击右侧的更改按钮,设定调度发生的频率和每日发生的频率以及持续时间。
![](http://michaelwang.blog.51cto.com/attachment/200801/200801161200463851851.jpg?x-oss-process=image/resize,w_1400/format,webp)
![](http://michaelwang.blog.51cto.com/attachment/200801/200801161200463938538.jpg?x-oss-process=image/resize,w_1400/format,webp)
4.在步骤2中,还可以选择对单个的文件进行收缩。方法是点击“文件”,在“数据库文件”列表中选择一个要收缩的文件,在“收缩操作”中选择一种收缩文件的方式点击确定按钮。
![](http://michaelwang.blog.51cto.com/attachment/200801/200801161200463977851.jpg?x-oss-process=image/resize,w_1400/format,webp)
![](http://michaelwang.blog.51cto.com/attachment/200801/200801161200463996632.jpg?x-oss-process=image/resize,w_1400/format,webp)
![](http://michaelwang.blog.51cto.com/attachment/200801/200801161200464063554.jpg?x-oss-process=image/resize,w_1400/format,webp)
7.除了手工设置数据库的收缩外,还可以设置让数据库自动收缩。双击要收缩的数据库图标,在数据对话框的“选项”页面中选中“自动收缩”选项,点击“确定”按钮。
![](http://michaelwang.blog.51cto.com/attachment/200801/200801161200464034398.jpg?x-oss-process=image/resize,w_1400/format,webp)
8.通过本例我们学习了如何收缩数据库以及如何对数据库收缩进行调度设置。HOHO
9.通过语句我们也可以来收缩数据库,
AIS20071219151707
是数据库名,在查询分析器中执行。
DBCC SHRINKDATABASE(AIS20071219151707)
backup log AIS20071219151707 with no_log
backup log AIS20071219151707 with no_log
注:
SQL Server 2000允许收缩数据库的每个文件以除掉未使用的页面,数据文件和事务日志文件都能被收缩。收缩可以成组进行,也可以个别进行。可以指定时间间隔使得数据库在给定的时间自动收缩,这时收缩操作是在后台发生的,不会影响任何数据库用户的活动。当使用了ALTER DATABASE 的AUTO_SHRINK 选项设置数据库的自动收缩(或者是系统存储过程sp_dboption)时,每当数据库中有大量的空闲空间时,数据库就会收缩,然而如果要移除的空闲空间百分比不能被设置的话则空闲空间将会尽可能地被释放。
不能收缩比其最初的规模小的完全的数据库,所以假定一个数据库在创建时的初始大小是10M,然后增长到了100M,如果此时数据库中所有的数据都被删除了,则它能收缩到的最小规模也是10M,不过使用DBCC SHRINKFILE语句可以将单个数据库文件收缩到小于初始规模的大小,如果使用这种方法就必须对每个文件进行操作而不能对整个数据库收缩。
事务日志文件的收缩有固定的界线,虚拟日志的规模决定了可能的减少。因此日志文件决不能收缩到比虚拟日志文件更小的规模,收缩事务日志文件将删除未使用的虚拟日志文件,但会留下至少一个虚拟日志文件。
SQL Server 2000中DBCC SHRINK DATABASE或DBCC SHRINKFILE操作会试图立即将事务日志文件收缩到要求的尺寸(在取整的条件下).应该在收缩文件之前就截取好日志文件已减少逻辑日志文件的大小,并且标记出不含有任何逻辑日志的虚拟日志。
不能收缩比其最初的规模小的完全的数据库,所以假定一个数据库在创建时的初始大小是10M,然后增长到了100M,如果此时数据库中所有的数据都被删除了,则它能收缩到的最小规模也是10M,不过使用DBCC SHRINKFILE语句可以将单个数据库文件收缩到小于初始规模的大小,如果使用这种方法就必须对每个文件进行操作而不能对整个数据库收缩。
事务日志文件的收缩有固定的界线,虚拟日志的规模决定了可能的减少。因此日志文件决不能收缩到比虚拟日志文件更小的规模,收缩事务日志文件将删除未使用的虚拟日志文件,但会留下至少一个虚拟日志文件。
SQL Server 2000中DBCC SHRINK DATABASE或DBCC SHRINKFILE操作会试图立即将事务日志文件收缩到要求的尺寸(在取整的条件下).应该在收缩文件之前就截取好日志文件已减少逻辑日志文件的大小,并且标记出不含有任何逻辑日志的虚拟日志。
---------------------------------------------------------------------------
本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/59014
,如需转载请自行联系原作者