原文 http://www.cnblogs.com/sunshineflower/archive/2013/04/17/3026233.html
DBCC是SQL Server的数据库控制台命令。它可以提供多种命令,用于实现数据库维护、验证、获取信息等功能。
用法一:使用DBCC SHRINKDATABASE语句收缩数据库
使用DBCC SHRINKDATABASE语句可以收缩指定数据库中的数据文件和日志文件的大小,其基本语法结构如下:
基本语法:
DBCC SHRINKDATABASE(数据库名|数据库ID|0,目标百分比,NOTRUNCATE|TRUNCATEONLY)
在DBCC SHRINKDATABASE后面需要指定要收缩的数据库名称或数据库ID。如果使用0,则收缩当前数据库。
参数“目标百分比”,可选,只对收缩数据文件有效。使用此参数后,文件末尾已分配的页移动到文件前面未分
配的页。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会改变。
参数“TRUNCATEONLY”,可选,也只对收缩数据文件有效。使用此参数后,文件末尾的所有可用空间都会释放给
操作系统,但不在文件内部执行页移动操作。因此,使用此参数数据文件只能收缩最近分配的区。
例如,收缩数据库db_test,剩余可用空间为10%,代码如下:
DBCC SHRINKDATABASE(db_test,10)
需要注意的是,数据库空间并不是越小越好。因为大多数数据库都需要预留一部分空间,以供日常操作使用。因
此,在收缩数据库时,如果数据库文件的大小不变或者反而变大了,则说明收缩空间是常规操作所需要的,这是
,就不需要收缩数据库了。
用法二:使用DBCC SHRINKDATABASE语句收缩指定的数据库文件
基本语法:
DBCC SHRINKFILE(文件名|文件ID|0,EMPTYFILE,收缩后文件的大小,NOTRUNCATE|TRUNCATEONLY)
参数文件名,必填,指要收缩的数据库文件的逻辑名称。
参数EMPTYFILE,可选,数据库引擎将当前文件的所有数据都迁移到同一文件组中的其他文件,然后可以使用
ALTER DATABASE语句来删除该文件。
参数"收缩后文件的大小"用整数表示,单位为MB。如果未指定此参数,则文件减少到默认的文件大小。
参数“TRUNCATEONLY”,可选,也只对收缩数据文件有效。使用此参数后,文件末尾的所有可用空间都会释放给
操作系统,但不在文件内部执行页移动操作。因此,使用此参数数据文件只能收缩最近分配的区。
例如:将数据库db_test中的db_test1文件收缩的20MB,代码如下:
DBCC SHRINKFILE(db_test1,20);
例如:使用EMPTYFILE关键字清空数据库文件。
将数据库db_test中的db_test1文件清空,然后使用ALTER DATABASE语句来删除该文件,代码如下:
DBCC SHRINKFILE(db_test1,EMPTYFILE) GO ALTER DATABASE db_test1 REMOVE FILE dbtest1
例如:有时候日志文件会变得很大,可以使用DBCC SHRINKFILE来收缩日志文件,代码如下:
DBCC SHRINKFILE (db_test_Log, 1);