无法缩小数据库

时间:2019-02-13 07:09:41

标签: sql-server shrink

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

dbcc shrinkfile(N'test_db', truncateonly)

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

dbcc shrinkfile(N'test_db', 1)

文件缩小到3mb。

能否请您解释一下行为上的区别? 由于TRUNCATEONLY会在文件末尾释放空格,因此为什么在数据文件为空时无法缩小文件。

2 个答案:

答案 0 :(得分:1)

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

  

target_size

     

是以兆字节为单位的文件大小,以整数表示。 如果没有   指定后,DBCC SHRINKFILE会将大小减小为默认文件大小。   默认大小是创建文件时指定的大小。

因此,如果要将大小减小到创建文件时指定的大小以下,则甚至应为target_size指定truncateonly

dbcc shrinkfile(1, 1, truncateonly)

答案 1 :(得分:0)

SQL Server使用NOTRUNCATE选项运行数据库收缩操作,以在数据文件的末尾获得一些可用空间。 Windows文件系统中文件的物理大小在这里没有任何变化。此步骤还引入了索引碎片。

SQL Server使用TRUNCATEONLY选项运行数据库收缩操作,最后删除数据文件末尾的未分配扩展区。它还可以缩小Windows文件系统中文件的物理大小。