文件始终从末尾开始收缩。
例如,如果有个 5 GB 的文件,并且在dbcc shrinkfile 语句中将 target_size 指定为 4 GB,则数据库引擎将从文件的最后一个 1 GB 开始释放尽可能多的空间。如果文件中被释放的部分包含使用过的页,则数据库引擎先将这些页重新放置到文件的保留部分。
只能将数据库收缩到没有剩余的可用空间为止。例如,如果某个 5 GB 的数据库有 4 GB 的数据,并且在dbcc shrinkfile语句中将 target_size 指定为 3 GB,则也只能释放 1 GB。
最常见的情况是只收缩日志文件:
USE[master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY
SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY
SIMPLE --简单模式
GO
USE 要清理的数据库名称
GO
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2,
TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定
GO
USE[master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY
FULL WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY
FULL --还原为完全模式
GO