首页 > 解决方案 > 无法收缩数据库

问题描述

我已经安装了 SQL Server 2017。我创建了一个大小为 512 mb 的 test_db,并尝试使用 SQL 查询来缩小数据库:

dbcc shrinkfile(N'test_db', truncateonly)

但我没有看到数据库正在缩小。如果我使用以下 SQL 查询:

dbcc shrinkfile(N'test_db', 1)

文件缩小到 3mb。

你能解释一下行为的不同吗?既然 TRUNCATEONLY 释放文件末尾的空格,为什么当数据文件为空时它不能收缩文件。

标签: sql-servershrink

解决方案


如果您打开文档DBCC SHRINKFILE (Transact-SQL),您会发现

目标大小

是以 MB 为单位的文件大小,以整数表示。如果未指定,则 DBCC SHRINKFILE 将大小减小到默认文件大小。默认大小是创建文件时指定的大小。

因此,如果您想将大小减小到低于创建文件时指定的大小,您应该指定target_sizeeven for truncateonly

dbcc shrinkfile(1, 1, truncateonly)

推荐阅读