sql-server-2008 - 逆转 SQL Server 2008 R2 中事务日志的更改?

标签 sql-server-2008 backup database-backups transaction-log

我们有一个 SQL Server 2008 R2 数据库,可以时不时地备份事务日志。今天上午 12 点左右,数据库出现了一个大错误...我的事务日志截至上午 8 点,然后是上午 12 点 - 下午 16 点 - 等等。

我的问题是:我可以将这些事务日志反向合并到数据库中,以便我返回到上午 8 点的数据库状态吗?

或者是我恢复较旧的完整备份并恢复上午 8 点之前的所有事务日志的最佳机会?

第一个选项是更好的选择,因为完整备份已经执行了一段时间,我担心从那里恢复并应用 trn 日志会搞砸事情。我对此是否感到虚惊一场?如果按照这种情况(恢复完整备份并应用 trn 日志),实际上是否有可能发生任何不好的事情?

最佳答案

您不创建定期事务日志备份这一事实不会影响恢复过程的成功。只要您的数据库处于完整恢复模式,事务就会存储在联机事务日志中,并保留在其中,直到进行事务日志备份。如果您比平时晚进行事务日志备份,这只意味着联机事务日志可能会增长并且备份可能会更大。不会导致任何交易记录丢失。

借助可追溯到上午 8 点的完整事务日志备份链,您可以成功地将整个数据库回滚到某个时间点。

至于恢复完整备份并应用 trn 日志 - 应该不会出错,但始终建议首先在测试服务器上测试场景,而不是直接在生产中测试

恢复到某个时间点:

  1. 在 SSMS 中展开数据库
  2. 右键单击数据库,选择任务 |恢复|数据库
  3. 在常规选项卡中,备份集中将列出可用的备份。点击时间线
  4. 选择特定日期和时间,更改时间间隔以显示更宽的时间范围,然后将 slider 移动到您要回滚的时间

enter image description here

您可以在此处找到更详细的说明:How to: Restore to a Point in Time (SQL Server Management Studio)

请记住,此过程将回滚对数据库所做的所有更改。如果您只想回滚特定更改(例如仅恢复某些已删除的数据,或反转错误的更新),我建议使用第三方工具,例如 ApexSQL Log

Reverting your SQL Server database back to a specific point in time

Restore a database to a point in time

免责声明:我在 ApexSQL 担任支持工程师

关于sql-server-2008 - 逆转 SQL Server 2008 R2 中事务日志的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978714/

相关文章:

mysql - 使用 .sql 备份导入恢复站点

sql-server - 开源或低成本 "log shipping"程序

sql-server-2008 - 导出和导入数据库中的选定行

sql server 阻塞操作符

sql-server-2008 - t-sql 查询中的 MAX 函数

mysql - MS SQL 服务器和 MySQL 服务器有什么区别

database - postgresql pg_dump 的输出去哪里

mysql - 如何创建Sql Job来创建数据库备份和维护计划?

mysql - 如何将大型数据库转储非常快速地从远程 aws 计算机传输到本地计算机

sql-server - SQL 查询不返回相关记录处于非事件状态的记录