如何将 SQL Server 数据库从 RAM 刷新到硬盘?

Ful*_*oof 2 sql-server backup transaction-log

作为夜间维护计划的一部分,我的 MS SQL Server 2012 数据库使用简单恢复和完整备份选项进行备份。事务日志未备份。此外,在晚上重新启动 MSSQLSERVER 服务或 SQL Server

检查操作系统(Windows Server 2008)中相应文件的属性,我观察到.mdf文件的“修改”时间与维护计划(制作备份)运行的时间相对应,但.log文件修改时间为一两周早些时候。

为什么会有这样的差异,为什么操作系统无法更新修改时间?

那么,.mdf文件修改时间的时间和原因是什么?
是重启SQL Server还是备份时间?

我如何估计数据库上次写入物理磁盘的时间,即相应数据库的 .mdf 文件的最近时间?
如何强制 SQL Server 将数据库刷新到硬盘,以便在看到 SQL Server 运行出现问题的情况下获得最实际的 .mdf 文件?

Han*_*non 6

mdf 和 ldf 文件显示 SQL Server 上次打开相关文件的日期和时间。这很可能是上次重新启动 SQL Server 的时间。

没有理由强制 SQL Server 刷新到磁盘,它会在其检查点机制期间自动执行此操作。

即使整个机器在写入磁盘操作的过程中崩溃,当 SQL Server 重新启动时,它也会运行日志文件,向前和向后滚动任何未完全提交到 .mdf 文件的操作。这是原子、一致、隔离和持久的数据库服务器的主要原则之一。

如果要手动强制执行检查点操作,可以在 SQL Server Management Studio 或 SQLCMD 等中执行以下命令:

CHECKPOINT
Run Code Online (Sandbox Code Playgroud)

有关该CHECKPOINT命令的更多信息,请参阅http://technet.microsoft.com/en-us/library/ms188748.aspx

关于您在问题开始时备份数据库而不是日志文件的声明,如果您的数据是关键业务数据,您应该对数据库启用完全恢复,并确保您的日志文件每天备份数次(在至少)。备份日志文件可确保您可以将数据库恢复到给定的时间点(很可能是您上次执行日志备份的时间点)。根据您对恢复点和恢复时间的业务要求,您可能希望每 5 分钟备份一次日志文件!

有关如何为 SQL Server 正确实施业务关键型备份的更多信息,请参阅http://technet.microsoft.com/en-us/library/hh393536.aspx