面有两个SQL语句可以达到在SQL Server 2005/2008压缩指定数据库文件和日志的大小的效果: 1、DBCC SHRINKDATABASE (Transact-SQL) 收缩指定数据库中的数据文件和日志文件的大小
语法 DBCC SHRINKDATABASE ( 'database_name' | database_id | 0 [ ,target_percent ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ) [ WITH NO_INFOMSGS ] 参数 'database_name' | database_id | 0 要收缩的数据库的名称或 ID
如果指定 0,则使用当前数据库
target_percent 数据库收缩后的数据库文件中所需的剩余可用空间百分比
NOTRUNCATE 通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据
target_percent 是可选参数
文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改
因此,指定 NOTRUNCATE 时,数据库看起来未收缩
NOTRUNCATE 只适用于数据文件
日志文件不受影响
TRUNCATEONLY 将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动
数据文件只收缩到最近分配的区
如果与 TRUNCATEONLY 一起指定,将忽略 target_percent
TRUNCATEONLY 只适用于数据文件
日志文件不受影响
WITH NO_INFOMSGS 取消严重级别从 0 到 10 的所有信息性消息
结果集 列名 说明 DbId 数据库引擎试图收缩的文件的数据库标识号
FileId 数据库引擎尝试收缩的文件的文件标识号
CurrentSize 文