Sql server 从SQL Server中删除数据不会影响.mdf文件大小

Sql server 从SQL Server中删除数据不会影响.mdf文件大小,sql-server,Sql Server,我在SQL server中有一个数据库,其中MDF大约为8gb。 其中大部分(比如95%)是我保存的一些日志,我可以删除它们(或者截断) 即使我删除了记录,MDF仍然是同一个文件。事实上,如果我使用delete,它会更大,如果我使用Truncate,它会完全相同 强制数据库反映新数据大小的正确方法是什么 另外,我尝试将数据库转移到另一台服务器,在将数据从8GB移动并删除日志后,它的容量为350mb。但是在主服务器中,即使删除了日志,它仍然保持8GB。为了减小数据库文件的大小,您必须缩小它。收缩将

我在SQL server中有一个数据库,其中MDF大约为8gb。 其中大部分(比如95%)是我保存的一些日志,我可以删除它们(或者截断)

即使我删除了记录,MDF仍然是同一个文件。事实上,如果我使用delete,它会更大,如果我使用Truncate,它会完全相同

强制数据库反映新数据大小的正确方法是什么


另外,我尝试将数据库转移到另一台服务器,在将数据从8GB移动并删除日志后,它的容量为350mb。但是在主服务器中,即使删除了日志,它仍然保持8GB。

为了减小数据库文件的大小,您必须缩小它。收缩将删除空页,这类似于对文件系统进行碎片整理或压缩Access数据库。这可以通过在ManagementStudio中数据库的“任务”菜单下执行Shrink命令或执行DBCC SHRINKDATABASE命令来完成

但要当心生产中不断缩小的数据库!首先,通过阅读本文了解收缩的具体作用:

本文很好地研究了缩小数据库然后重新组织/重建索引的影响。
. 缩小与碎片,磁盘空间与性能。

。最简单的方法是缩小数据库。正确的方法(或者更确切地说是方法)更为复杂,因为收缩速度慢,会导致可怕的索引碎片。即使您必须收缩,重要的是确保不再需要它。我希望避免收缩数据库,因为我相信它会变慢。正如你提到的重要的事情-这些都是日志,所以他们会再次填补某个时候。因此,空间和速度之间的权衡。收缩后的速度会较慢,但大多数情况下仅在需要时分配新的扩展数据块,而且可能存在细微差别。