恢复数据库占用大量空间

时间:2018-02-06 10:44:35

标签: sql-server ssms shrink transaction-log

我使用1.5gb .bak文件恢复了数据库。一切正常,但恢复的数据库现在需要64GB的空间。

我听说过缩小的数据库和日志文件但是我应该怎样才能找到需要这么多空间的内容以及我能够缩小的内容和#34;这样数据本身就不会发生变化。我在开发环境中需要这个生产备份数据。

我不需要在我正在进行还原的开发环境中使用完整日志。如何找出占用更多空间的数据或日志?

我正在使用SQL Server Management Studio 2017

3 个答案:

答案 0 :(得分:1)

您可以使用

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

所以你可以计划它需要多少空间。

  

如何找出占用更多空间的数据或日志?

请使用

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

答案 1 :(得分:1)

也许是日志?

我建议你分析一下是否适合你。缩短备份时间:See More

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

还原后,您还可以将Recovery Model从完整(默认)更改为简单。

That shows where you can change it

然后SHRINK

<小时/> 老实说,我不确定是否所有这些都是必要的,但这对我来说可以减少空间。在改变恢复模式之前可能会缩小,或者其中一种不是最好的实践。

答案 2 :(得分:1)

您的问题:“如何确定数据或日志是否占用更多空间?”

答案:这是一种方式。在Sql Mgt中右键单击您的数据库。在Studio中,单击Reports =&gt;标准报告,然后单击磁盘使用情况。

如果您不了解完整恢复模式和简单恢复模型之间的差异,我建议您进行一些阅读。还要了解缩小文件和自动增长的后果。缩小文件不会导致丢失已提交的数据,但如果Sql需要自动生成文件,则会在以后导致性能下降。

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

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