我在我的程序中通过Linq-to-SQL使用SQL Server数据库
我正在使用此代码清空数据库
db.Tb1.DeleteAllOnSubmit(db.Tb1.Select(x => x));
db.SubmitChanges();执行此代码后,数据库中的所有内容都将被清除。但问题是当删除行时,数据库的大小并没有减小。
我的意思是,在没有数据的情况下,使用该代码后,数据库的大小仍然是相同的
很抱歉我的英语不好
发布于 2012-04-07 05:13:05
这就是SQL Server的工作方式。除非您在数据库上手动运行“释放未使用的空间”操作,否则不会返回空间,该操作会重新组织记录在数据库文件中的物理存储方式。否则,未使用的空间将被保留并在添加新记录时重用。
发布于 2012-04-07 05:19:08
无论何时删除行,数据库都不会收缩其数据文件。您必须要求服务器收缩其文件,例如,使用T-SQL命令DBCC SHRINKDATABASE (请参阅MSDN Documentation for DBCC SHRINKDATABASE)。此行为的主要原因可能是收缩对性能的影响。此外,服务器将重用现在空闲的页面。对于定期删除大型行集或截断完整表的数据库,可以将收缩安排为维护任务。然后,您还应该为该表计划数据库统计信息的更新(T-SQL命令UPDATE STATISTICS)。
https://stackoverflow.com/questions/10049265
复制相似问题