删除表的分配空间 - SQL Server

时间:2009-09-03 05:23:30

标签: sql-server

我得到了一张表,其中获得了3gig的分配空间但没有行 如何删除这个分配的空间?

3 个答案:

答案 0 :(得分:3)

TRUNCATE TABLE存在一些限制,如果不能执行截断,则可以重建聚簇索引以释放分配的空间。

您不能在以下表格上使用TRUNCATE TABLE:

  • 由FOREIGN KEY引用 约束。 (您可以截断表格 那个有外键的 引用自己。)
  • 参与索引视图。
  • 使用transactional发布 复制或合并复制。

如果表包含标识列,则该列的计数器将重置为为该列定义的种子值。如果未定义种子,则使用默认值1。要保留身份计数器,请改用DELETE。如果是这种情况,则需要重新设置表以继续从其所在位置开始的身份增量。

如果表没有聚簇索引,您可以在DELETE语句中使用TABLOCK提示释放分配的空间。

DELETE FROM table WITH(TABLOCK)

如果表使用聚簇索引,则可以重建索引以释放空间。

答案 1 :(得分:1)

你可以这样做:

truncate table [table_name]

然后在Sql Server Express Manager中,右键单击数据库并转到tasks-> shrink->数据库/文件(同时执行这两项操作)。应该清理你。

答案 2 :(得分:1)

这些应该这样做,它们会缩小你的数据库文件。如果表为空,则将使用以下命令释放表的保留空间

DBCC SHRINKDATABASE ('DBName')
DBCC SHRINKFILE ('LogicalFileName')