【问题标题】:RESTORE is not restoring database in its original stateRESTORE 未将数据库还原为其原始状态
【发布时间】:2019-06-12 13:54:55
【问题描述】:

我正在处理 SQL Server 2012 下的备份文件(~9Gb,无法修改),并且经常需要将我的基础恢复到其原始状态,但我注意到 .ldf 日志文件变得越来越巨大的(今天 >20Gb),而第一次大约是 1Gb。

我尝试缩小日志文件并限制日志文件大小,但下次仍以 20Gb 恢复,我已删除数据库并清除 msdb 恢复历史记录并仍在恢复巨大的 .ldf 文件....

我正在使用代码:

使用[主]

从磁盘恢复数据库 [MYBASE] = N'D:\SQLServer\BACKUP\MYBACKUP.bak' WITH FILE = 1,

将 N'MYBACKUP' 移动到 N'D:\SQLServer\DATA\MYBASE.mdf',

将 N'MYBACKUP' 移动到 N'D:\SQLServer\LOG\MYBASE.ldf',

名词、替换、统计 = 5

有什么想法吗?

我的代码有问题吗?

【问题讨论】:

  • 提供上下文 - 你什么时候注意到巨大的日志文件?恢复后立即?如果是这样,那么您(或其他人)已经用“小”日志文件覆盖了您的备份,其中一个日志文件很大。

标签: sql-server tsql


【解决方案1】:

我认为除了在还原后缩小日志文件之外没有其他可能。

您应该想知道的问题是为什么日志文件会变得如此之大。很多时候,当恢复模式设置为“完整”,但没有进行日志文件备份,或者至少非常不频繁,或者在数据库上有大批量操作(例如大导入)时 - 在最后一种情况下,需要一个大的日志文件,但文件大小并不能反映日志文件中的数据量。收缩它的副作用是当它增长时,它需要更多的磁盘 I/O 来增长日志文件,这会影响性能。

另一个原因可能是日志文件自动增长值设置为百分比值。因此,每个成长步骤都比前一个步骤大。它可以帮助使用 MB 值,例如 50 MB 而不是 10%(但这实际上取决于您的需求,不要将这些值视为您的最佳值)。

最好的祝愿 迈克尔

【讨论】:

  • 谢谢,我已经恢复了数据库,将恢复模式设置为简单,缩小了日志文件,并备份了这个编辑过的数据库。这个新备份具有相同的数据,但恢复后日志文件不再增长 :)
  • 请注意,简单恢复模式只能在您只进行完整备份时使用。这意味着,当您每天备份一次数据库时,您没有机会在上次备份后一次恢复数据库。我不想在此评论中过多谈论备份策略,但请继续尝试了解“完整”和“简单”恢复模型之间的区别,以及术语“数据库备份”(或“完整备份") 和“日志文件备份”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
相关资源
最近更新 更多