可能重复:
Reclaim space in SQL Server 2005 database when dropping tables permanently
我有一个占用20GB的表并且不需要它,但是使用DELETE语句不是一个选项,因为它会导致LDF文件由于每个行条目的记录被删除而迅速增长。
所以我使用了TRUNCATE TABLE,虽然现在db仍然占用相同的空间,尽管我删除了这个表。我在某处读过我应该使用shrink database选项,但问题是他们说它应该删除数据库中的所有索引吗?
你会建议做什么?还有其他方法可以从MDF文件中释放这个未分配的空间吗?
由于
答案 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