在sql server中删除表后回收磁盘

use*_*780 0 sql-server

在 sql server 中,我删除了表

DROP TABLE  [tb_tmp]
Run Code Online (Sandbox Code Playgroud)

但是从df -h,磁盘空间并没有增加。我该怎么办?我看到了类似收缩数据库的东西。但是我如何使用 sql 命令实现它?

Dom*_*her 5

如果您删除数据(或像表这样的对象),数据库文件(mdf 和 ndf)的大小不会减小。

减少数据文件大小的唯一方法(您也可以创建一个新数据库并将内容从旧数据库移动到新数据库,然后删除旧数据库,但这会增加复杂性)减少数据文件的大小是使用

DBCC SHRINKFILE (N'Db_Name' , SizeInMb)
Run Code Online (Sandbox Code Playgroud)

这将导致您的数据库出现碎片,如果您进行索引维护,这可能会导致数据库大小再次增长,因此我不建议缩小数据库,除非有重大胜利或确实需要这样做(例如:如果表您删除的是 250Gb 数据库中的 200Gb)。

否则,您将数据库保持相同的大小,未来的新数据将有空间,因此您以后不必处理自动增长。这是因为当您创建DROP一个对象(例如表)时,空间会在内部释放到数据库中,以供将来的对象重新使用。但是它并没有被服务器的磁盘本身明确释放和回收。