2

我在我的程序中使用带有 Linq-to-SQL 的 SQL Server 数据库

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

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

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

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

对不起英语不好

4

2 回答 2

3

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

于 2012-04-06T21:13:04.580 回答
2

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

于 2012-04-06T21:19:08.467 回答