我有一个需要 20GB 的表并且不需要它,但是使用 DELETE 语句不是一个选项,因为它会导致 LDF 文件由于记录删除的每个行条目而迅速增长。
所以我使用了 TRUNCATE TABLE,尽管我已经删除了这个表,但现在数据库仍然占用相同数量的空间。我在某处读过我应该使用收缩数据库选项,但问题是他们说它应该删除数据库中的所有索引?
你会推荐做什么?有没有其他方法可以从 MDF 文件中释放这个未分配的空间?
谢谢
我有一个需要 20GB 的表并且不需要它,但是使用 DELETE 语句不是一个选项,因为它会导致 LDF 文件由于记录删除的每个行条目而迅速增长。
所以我使用了 TRUNCATE TABLE,尽管我已经删除了这个表,但现在数据库仍然占用相同数量的空间。我在某处读过我应该使用收缩数据库选项,但问题是他们说它应该删除数据库中的所有索引?
你会推荐做什么?有没有其他方法可以从 MDF 文件中释放这个未分配的空间?
谢谢
您可以改用收缩文件
来自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