日志传送-使用STANDBY进行还原-在SQL Server 2012上不断崩溃


10

我们RESTORE WITH STANDBY在SQL Server 2012上使用日志传送,以便以只读模式还原数据库以进行报告。但是,完成一个或两个日志备份的还原后,日志传送设置不断中断。日志传送仅在以方式运行时才会中断RESTORE WITH STANDBYRESTORE WITH NORECOVERY不会造成任何问题。

我唯一的直觉是主数据库不是那么动态。因此,当没有事务时,这可能导致RESTORE流程出现问题?

有什么想法,已知的解决方法吗?

我通过运行一个常规工作对几天进行了几天工作,该工作在两个表上进行了大量更新。当作业停止运行时,日志传送设置迅速失败,无法处理.trn文件。我重置了日志传送,并尝试通过进行一次小的更新来查看它是否能够继续运行,无论它仍然失败了,更改表中一条记录的一列的值。

感谢您的所有回复。

PS:摘录自我们的日志

2013年2月25日13:00:00,LSRestore_DBDB01-A_BulldogDB,进行中,1,DBREPORTS,LSRestore_DBDB01-A_BulldogDB,日志传送还原日志作业步骤。,2013-02-25 13:00:12.31 ***错误:无法将日志备份文件'\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn'应用于辅助数据库'BulldogDB'。(Microsoft.SqlServer.Management.LogShipping)***
2013-02-25 13:00:12.31 ***错误:处理数据库'BulldogDB'的日志时发生错误。如果可能,请从备份还原。如果没有备份,则可能需要重建日志。
恢复期间发生错误,阻止数据库'BulldogDB'(8:0)重新启动。诊断恢复错误并进行修复,或从已知的良好备份中恢复。如果错误没有得到纠正或无法预期,请联系技术支持。
RESTORE LOG异常终止。
已处理文件1上数据库'BulldogDB'文件'BulldogDB'的0页。
为文件1(.Net SqlClient数据提供程序)上的数据库'BulldogDB'文件'BulldogDB_log'处理了1页
2013-02-25 13:00:12.32 ***错误:无法记录历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)***
2013-02-25 13:00:12.32 ***错误:ExecuteNonQuery需要打开且可用的连接。连接的当前状态为关闭。(System.Data)***
2013-02-25 13:00:12.32跳过辅助数据库'BulldogDB'的日志备份文件'\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn',因为无法验证该文件。
2013-02-25 13:00:12.32 ***错误:无法记录历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)***
2013-02-25 13:00:12.32 ***错误:ExecuteNonQuery需要打开且可用的连接。连接的当前状态为关闭。(System.Data)***
2013-02-25 13:00:12.33 ***错误:恢复数据库访问模式时发生错误。(Microsoft.SqlServer.Management.LogShipping)***
2013-02-25 13:00:12.33 ***错误:ExecuteScalar需要打开且可用的连接。连接的当前状态为关闭。(System.Data)***
2013-02-25 13:00:12.33 ***错误:无法记录历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)***
2013-02-25 13:00:12.33 ***错误:ExecuteNonQuery需要打开且可用的连接。连接的当前状态为关闭。(System.Data)***
2013-02-25 13:00:12.33 ***错误:恢复数据库访问模式时发生错误。(Microsoft.SqlServer.Management.LogShipping)***
2013-02-25 13:00:12.33 ***错误:ExecuteScalar需要打开且可用的连接。连接的当前状态为关闭。(System.Data)***
2013-02-25 13:00:12.33 ***错误:无法记录历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)***
2013-02-25 13:00:12.33 ***错误:ExecuteNonQuery需要打开且可用的连接。连接的当前状态为关闭。(System.Data)***
2013-02-25 13:00:12.33删除旧的日志备份文件。主数据库:“ BulldogDB”
2013-02-25 13:00:12.33 ***错误:无法记录历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)***
2013-02-25 13:00:12.33 ***错误:ExecuteNonQuery需要打开且可用的连接。连接的当前状态为关闭。(System.Data)***,00:00:12,0,0 ,,,, 0

它的中断之处在于LS_Restore作业无法应用事务日志备份。我只是重置了日志传送,所以所有错误日志信息都从数据库中消失了。我将它们保存在某个地方,找到它们后会张贴它们。谢谢。
孟德尔2013年

我们得到的东西,如“跳过日志备份文件... .trn为辅助数据库‘DB’,因为文件无法核实我不知道你会如何专门检查是否有损坏。
孟德尔

Answers:


4

如果辅助数据库处于NORECOVERY时能够还原日志备份,并且仅在处于只读/备用状态时才失败,那么我认为日志备份本身还可以,并且没有损坏。

您的报表组件可能与数据库建立了开放连接,因此,在还原日志文件时,由于开放的连接,它无法获得与数据库的排他连接。设置日志传送时,有一个选项可以断开所有连接,以允许它还原日志备份。


1
这是对的。要解决此问题,请不要让日志传送作业在待机状态下还原,而要在将要在待机状态下还原的作业中添加第二步。使用STANDBY = N'standbyfile'的RESTORE DATABASE [database]。另一种选择是,事务日志备份没有完成,尝试添加20分钟延迟的恢复
Spörri

1

在备用数据库上,辅助还原仅在作业启动时断开用户的连接,启动用户可以连接后...,这将停止还原过程,并显示有关“独占访问”的错误。我得到的服务在还原时试图连接到备用数据库。这使得还原过程在1-10 / 100个还原文件后中断。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.