在 SQL Server 数据库中进行数据清理后,虽然对应的数据页会从数据文件中删除,但数据文件本身所占用的磁盘空间并不会自动释放。为了回收这些未使用的空间,需要使用收缩数据库功能来手动释放数据文件占用的磁盘空间。
数据清理和可释放磁盘空间

如上图所示,在进行了数据清理后,数据文件仍然占用133MB的磁盘空间,Available free space 显示93MB,这说明可以使用收缩数据库功能,最多可以释放出93MB的磁盘空间。

如上图所示,使用收缩数据库功能回收了部分 Available free space 后,数据文件占用磁盘空间变为50MB。
云数据库 SQL Server 收缩数据库方案
方案一:通过控制台收缩数据库
1. 登录 SQL Server 控制台,在实例列表,单击实例 ID 或操作列的管理,进入实例管理页面。
2. 在实例管理页面,选择数据库管理页,选择目标数据库所在行,在操作列选择其他 > 收缩数据库。

3. 开启后,流程会自动以2G一次的收缩量进行循环收缩,直到释放掉所有的 Available free space 为止。
方案二:使用 SSMS 连接实例,使用脚本进行收缩
注意:
收缩数据库可能会产生较大的日志和阻塞,因此,当您使用脚本进行收缩时,不建议一次性收缩较大量级(例如一次性收缩50G以上)。建议在业务低峰期,少量多次进行收缩。
步骤1:通过 SSMS 连接到 SQL Server 实例
步骤2:使用脚本进行收缩
说明:
实际使用下面的命令时,请将变量替换为实际的信息:
[database]:替换为您的目标数据库名称,例如 [MyDB]。
N'数据库逻辑文件名':替换为要收缩的数据库文件,例如 N'MyDBData'。
收缩的目标大小:替换为实际要收缩的目标大小,例如40,表示收缩至40MB。
USE [database]GODBCC SHRINKFILE (N'数据库逻辑文件名' , 收缩的目标大小)GO
示例:将 MyDB 的数据文件 MyDBData 收缩到40MB。
USE [MyDB]GODBCC SHRINKFILE (N'MyDBData' , 40)GO