mssql收缩数据库DBCC SHRINKFILE

文件始终从末尾开始收缩。

例如,如果有个 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