恢复的数据库占用了大量 space

Restored database taking massive amount of space

我用一个 1.5gb 的 .bak 文件恢复了一个数据库。除了恢复的数据库现在占用 64gb space.

之外,一切正常

我听说过缩减数据库和日志文件,但我应该如何找出是什么占用了这么多 space 以及我能做什么 "shrink" 这样数据本身就不会改变。我的开发环境中需要这个生产备份数据。

我在进行恢复的开发环境中不需要完整日志。如何判断是数据还是日志占用了更多space?

我正在使用 SQL Server Management Studio 2017

您可以使用

查看备份中数据库的文件大小是多少
restore filelistonly from disk = 'here_the_full_pass_to_your_backup_including_file_name'

所以您可以计划需要多少 space。

How to find out is it the data or the logs that take more space?

请用

的结果更新您的问题
use MyDB;
exec sp_spaceused;

也许是日志?

我建议你分析一下是否适合你。使备份更短:See More

BACKUP DATABASE XXXXX TO DISK 'C:\XXX.bak' WITH COPY_ONLY

您还可以在恢复后将 Recovery Model 从完全(默认)更改为简单。


然后SHRINK


老实说,我不确定是否所有这些都是必要的,但这对我来说可以减少 space。也许在更改恢复模型之前收缩更好,或者其中之一不是最佳实践。

您的问题:"How to find out if it is the data or the logs that take more space?"

答:这是一种方法。在 Sql Mgt 中右键单击您的数据库。 Studio,单击“报告”=>“标准报告”,然后单击“磁盘使用情况”。

如果您不了解完整恢复模型和简单恢复模型之间的区别,我鼓励您阅读一些内容。还要了解缩小文件和自动增长的后果。缩小文件不会导致您丢失已提交的数据,但会在以后 Sql 需要自动增长文件时导致性能下降。

如果您不需要完整恢复模式并且不关心自动增长,则将其更改为简单或批量记录,然后收缩日志文件。

如果您不担心自动增长,那么您也可以收缩数据文件。