截断表后的空闲空间

时间:2012-11-17 10:53:13

标签: sql-server-2005

  

可能重复:
  Reclaim space in SQL Server 2005 database when dropping tables permanently

我有一个占用20GB的表并且不需要它,但是使用DELETE语句不是一个选项,因为它会导致LDF文件由于每个行条目的记录被删除而迅速增长。

所以我使用了TRUNCATE TABLE,虽然现在db仍然占用相同的空间,尽管我删除了这个表。我在某处读过我应该使用shrink database选项,但问题是他们说它应该删除数据库中的所有索引吗?

你会建议做什么?还有其他方法可以从MDF文件中释放这个未分配的空间吗?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用缩小文件

来自MSDN

的语法
DBCC SHRINKFILE 
(
    { file_name | file_id } 
    { [ , EMPTYFILE ] 
    | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]
    }
)
[ WITH NO_INFOMSGS ]
  

缩小指定数据或日志文件的大小以获取当前值   数据库,或通过从指定文件移动数据来清空文件   到同一文件组中的其他文件,允许删除该文件   来自数据库。您可以将文件缩小到小于的大小   创建时指定的大小。这会重置最小文件   大小到新值。

示例

/* change into your database */
USE dbName
/* determine the logical file name */
EXEC sp_helpfile
GO
/* shrink the file */
DBCC SHRINKFILE (logicalLogFileName)
GO