SQL事务日志传送无法将数据库还原到备用数据库

时间:2016-04-25 22:19:14

标签: sql-server database sql-server-2014 log-shipping

我已经设置了两个SQL 2014服务器之间的事务日志传送,一切似乎都设置正确,但是当恢复发生时,如果.trn非常小,例如7k,它似乎会失败。

不确定这是否与它有关,但它是唯一不同的东西。

以下是还原作业的日志。

  

Date 25/04/2016 22:59:24记录工作历史(LSRestore_IRIS_WebStock)

     

步骤ID 1服务器HERA作业名称LSRestore_IRIS_WebStock步骤    名称日志传送还原日志作业步骤。持续时间00:00:04 Sql    严重性0 Sql消息ID 0运营商已通过电子邮件运营商发送的网络
   操作员分页重试次数为0

     

消息2016-04-25 22:59:28.71错误:无法应用日志备份    文件' E:\ ShippingLogs \ WebStock \ WebStock_20160425033000.trn'至    二级数据库    ' WebStock'。(Microsoft.SqlServer.Management.LogShipping)2016-04-25    22:59:28.71错误:处理日志时发生错误    数据库' WebStock'。如果可能,从备份还原。如果是备份    不可用,可能需要重建日志。一个错误    在恢复期间发生,阻止了数据库' WebStock' (12:0)    从重新启动。诊断恢复错误并修复它们或恢复    来自一个已知的好备份。如果错误未得到纠正或预期,    联系技术支持。

     

RESTORE LOG异常终止。    处理了0页数据库' WebStock',文件' WebStock'在档案1。    处理了1页数据库' WebStock',文件' WebStock_log'在档案上    1。(。Net SqlClient数据提供程序)2016-04-25 22:59:28.71错误:无法记录历史记录/错误    消息。(Microsoft.SqlServer.Management.LogShipping)2016-04-25    22:59:28.73错误:ExecuteNonQuery需要一个开放且可用的    连接。连接的当前状态已关闭。(System.Data)    2016-04-25 22:59:28.73跳过日志备份文件    ' E:\ ShippingLogs \ WebStock \ WebStock_20160425033000.trn'为中学    数据库' WebStock'因为无法验证该文件。 2016年4月25日    22:59:28.73错误:无法记录历史记录/错误    消息。(Microsoft.SqlServer.Management.LogShipping)2016-04-25    22:59:28.73错误:ExecuteNonQuery需要一个开放且可用的    连接。连接的当前状态已关闭。(System.Data)    2016-04-25 22:59:28.73错误:恢复时发生错误    数据库访问模式。(Microsoft.SqlServer.Management.LogShipping)    2016-04-25 22:59:28.73错误:ExecuteScalar需要打开和    可用连接。连接的当前状态是    关闭。(System.Data)2016-04-25 22:59:28.73错误:不能    日志历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)     2016-04-25 22:59:28.73错误:ExecuteNonQuery需要一个开放且可用的连接。连接的当前状态是    关闭。(System.Data)2016-04-25 22:59:28.73      错误:不能    应用日志备份文件    ' E:\ ShippingLogs \ WebStock \ WebStock_20160425034500.trn'到中学    数据库' WebStock'。(Microsoft.SqlServer.Management.LogShipping)    2016-04-25 22:59:28.73错误:ExecuteNonQuery需要打开和    可用连接。连接的当前状态是    关闭。(System.Data)2016-04-25 22:59:28.73错误:不能    日志历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)     2016-04-25 22:59:28.73错误:ExecuteNonQuery需要一个开放且可用的连接。连接的当前状态是    关闭。(System.Data)2016-04-25 22:59:28.73跳过日志备份    文件' E:\ ShippingLogs \ WebStock \ WebStock_20160425034500.trn'对于    二级数据库' WebStock'因为无法验证该文件。    2016-04-25 22:59:28.73错误:无法记录历史记录/错误    消息。(Microsoft.SqlServer.Management.LogShipping)2016-04-25    22:59:28.73错误:ExecuteNonQuery需要一个开放且可用的    连接。连接的当前状态已关闭。(System.Data)    2016-04-25 22:59:28.73错误:恢复时发生错误    数据库访问模式。(Microsoft.SqlServer.Management.LogShipping)    2016-04-25 22:59:28.73错误:ExecuteScalar需要打开和    可用连接。连接的当前状态是    关闭。(System.Data)2016-04-25 22:59:28.73错误:不能    日志历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)     2016-04-25 22:59:28.73错误:ExecuteNonQuery需要一个开放且可用的连接。连接的当前状态是    关闭。(System.Data)2016-04-25 22:59:28.73错误:不能    应用日志备份文件    ' E:\ ShippingLogs \ WebStock \ WebStock_20160425040000.trn'到中学    数据库' WebStock'。(Microsoft.SqlServer.Management.LogShipp

如果我删除该日志并再次运行还原,它将一直有效,直到找到另一个非常小的日志。

如果日志为空,还原会失败吗?

2 个答案:

答案 0 :(得分:0)

http://sqlmag.com/database-high-availability/how-restart-failed-log-shipping-quickly

请阅读文章..还有更多内容。我想我不能在这里发表整篇文章。

  

关于LSN的一切

     

LSN或Log Sequence Number是面包屑的踪迹   允许SQL Server中的任何恢复过程知道其顺序   要应用的交易。所有恢复过程都需要在   这个特定的顺序,以确保从中读取事务   事务日志和日志备份文件以它们的方式   最初应用于主数据库。

答案 1 :(得分:0)

来自dataavail

此备份集中的日志从LSN<#>开始,这太新了,无法应用于数据库

这是在各种日志传送生产方案中出现的错误。

  

2016-07-25 07:37:12.34 *错误:文件'C:\ LS_Secondary \ LogShippingDB_20160725020411.trn'太新了,无法应用于辅助数据库'LogShippingDB'。(Microsoft.SqlServer.Management .LogShipping)*

     

2016-07-25 07:37:12.34 *错误:此备份集中的日志从LSN 79000000014400001开始,这对于应用于数据库来说太新了。可以还原包含LSN 79000000011200001的早期日志备份。   RESTORE LOG异常终止。(。Net SqlClient数据提供程序)*

     

日志传送的工作原理是每个事务备份日志与先前的事务日志备份形成链。如果我们尝试跳过任何日志备份,则会遇到上述错误。要查找我们缺少的备份,我们可以使用MSDB备份历史记录表或ERRORLOG文件。它们都包含有关备份类型,位置等的信息。

     

2016-07-25 07:32:11.95备份日志已备份。数据库:LogShippingDB,创建日期(时间):2016/07/24(21:53:30),第一个LSN:79:48:1,最后一个LSN:79:80:1,转储设备数量:1,设备信息:(FILE = 1,TYPE = DISK:{'C:\ LS \ LogShippingDB_20160725020211.trn'})。这仅是一条信息性消息。无需用户操作。

     

2016-07-25 07:33:11.83备份日志已备份。数据库:LogShippingDB,创建日期(时间):2016/07/24(21:53:30),第一个LSN:79:80:1,最后一个LSN:79:112:1,转储设备数量:1,设备信息:(FILE = 1,TYPE = DISK:{'C:\ LS \ LogShippingDB_20160725020311.trn'})。这仅是一条信息性消息。无需用户操作。

     

2016-07-25 07:33:32.22备份日志已备份。数据库:LogShippingDB,创建日期(时间):2016/07/24(21:53:30),第一个LSN:79:112:1,最后一个LSN:79:144:1,转储设备数量:1,设备信息:(FILE = 1,TYPE = DISK:{'C:\ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Backup \ Extra.trn'})。这仅是一条信息性消息。无需用户操作。

     

2016-07-25 07:34:11.69备份日志已备份。数据库:LogShippingDB,创建日期(时间):2016/07/24(21:53:30),第一个LSN:79:144:1,最后一个LSN:79:176:1,转储设备数量:1,设备信息:(FILE = 1,TYPE = DISK:{'C:\ LS \ LogShippingDB_20160725020411.trn'})。这仅是一条信息性消息。无需用户操作。

我们突出显示了失败的日志备份。现在,我们需要及时回顾并找出为什么以前的日志没有在辅助服务器上恢复。

解决方案:

找到缺少的日志备份,并在辅助数据库中手动还原。恢复后,下一个备份将自动赶上。