面有两个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 文件当前占用的 8 KB 页数。 MinimumSize 文件最低可以占用的 8 KB 页数。这与文件的最小大小或最初创建时的大小相对应。 UsedPages 文件当前使用的 8 KB 页数。 EstimatedPages 数据库引擎估计文件能够收缩到的 8 KB 页数。 备注 若要收缩特定数据库的所有数据和日志文件,请执行 DBCC SHRINKDATABASE 命令。若要一次收缩一个特定数据库中的一个数据或日志文件,请执行 DBCC SHRINKFILE 命令。 若要查看数据库中当前的可用(未分配)空间量,请运行 sp_spaceused。 可在进程中的任一点停止 DBCC SHRINKDATABASE 操作,任何已完成的工作都将保留。 收缩后的数据库不能小于数据库的最小大小。最小大小是在数据库最初创建时指定的大小,或是使用文件大小更改操作(如 DBCC SHIRNKFILE 或 ALTER DATABASE)显式设置的最后大小。例如,如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数...