从SQL Server数据库中删除

时间:2012-04-06 21:07:21

标签: c# database linq-to-sql

我正在使用Linq-to-SQL

的程序中使用SQL Server数据库

我正在使用此代码清空数据库

 db.Tb1.DeleteAllOnSubmit(db.Tb1.Select(x => x));
 db.SubmitChanges();

执行此代码后,数据库中的所有内容都将被清除。但问题是删除行时数据库的大小没有减少。

我的意思是在没有数据的情况下使用该代码后,数据库的大小仍然相同

抱歉英文不好

2 个答案:

答案 0 :(得分:3)

这就是SQL Server的工作方式。除非您在数据库上手动运行“Free unused space”操作,否则不会返回该空间,该操作会重新组织记录在数据库文件中的物理存储方式。否则,保留未使用的空间并在添加新记录时重复使用。

答案 1 :(得分:2)

每次删除行时,数据库都不会收缩其数据文件。您必须要求服务器缩小其文件,例如使用T-SQL命令DBCC SHRINKDATABASE(请参阅MSDN Documentation for DBCC SHRINKDATABASE)。这种行为的主要原因可能是收缩的性能影响。此外,服务器将重用现在的免费页面。对于定期删除大型行或截断完整表的数据库,您可以将收缩计划为维护任务。然后,您应该为该表安排数据库统计信息的更新(T-SQL命令UPDATE STATISTICS)。