2017-01-11 84 views
0

我正在處理待機模式下從主服務器1(sql server 2008 R2)到輔助服務器2(sql server 2008 R2)的日誌傳送。如何處理SQL Server 2008 R2中日誌傳送中的還原失敗?

因此,有3個項目:在Server1上

  • 備份,
  • 副本,
  • 恢復Server2上。

備份源和目標的路徑位於server2上,並且沒有文件夾訪問問題。

現在第一個作業運行並創建備份,第二個作業創建副本和還原。 所有在第一時間正常工作,但我預定他們5分鐘,7分鐘和9分鐘。

但它不工作的第二次嘗試,甚至恢復作業拋出下面的錯誤,儘管我手動運行它:

The restore operation completed with errors. Secondary ID: 
could not find a log backup file that could be applied to secondary database. 

這是發生,因爲還有一個日誌備份會在主服務器上?如果是,那麼我如何管理日誌備份(外部日誌備份和日誌傳送)。

回答

0
Message 
2015-10-13 21:09:05.13  *** Error: The file ‘C:\LS_S\LSDemo_20151013153827.trn’ is too recent to apply to the secondary database ‘LSDemo’.(Microsoft.SqlServer.Management.LogShipping) *** 
2015-10-13 21:09:05.13  *** Error: The log in this backup set begins at LSN 32000000047300001, which is too recent to apply to the database. An earlier log backup that includes LSN 32000000047000001 can be restored. 
RESTORE LOG is terminating abnormally.(.Net SqlClient Data Provider) *** 
Above error is a shown in failure of the history of restore job. If the failure is more than configured thresholds, then we would start seen below error in SQL ERRORLOG on secondary also: 
2015-10-14 06:22:00.240 spid60  Error: 14421, Severity: 16, State: 1. 
2015-10-14 06:22:00.240 spid60  The log shipping secondary database PinalServer.LSDemo has restore threshold of 45 minutes and is out of sync. No restore was performed for 553 minutes. Restored latency is 4 minutes. Check agent log and logshipping monitor information. 

To start troubleshooting, we can look at Job activity monitor on secondary which would fail with the below state: 

SQL SERVER - Log Shipping Restore Job Error: The file is too recent to apply to the secondary database LS-Restore-01 

If you know SQL transaction log backup basics, you might be able to guess the cause. If we look closely to the error, it talks about LSN mismatch. Most of the cases, a manual transaction log backup was taken. I remember few scenarios where a 3rd party tool would have taken transaction log backup of database which was also part of a log shipping configuration. 

Since we know the cause now, what we need to figure out is – where is that 「out of band」 backup? Here is the query which I have written on my earlier blog. 

-- Assign the database name to variable below 
DECLARE @db_name VARCHAR(100) 
SELECT @db_name = 'LSDemo' 
-- query 
SELECT TOP (30) s.database_name 
,m.physical_device_name 
,CAST(CAST(s.backup_size/1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize 
,CAST(DATEDIFF(second, s.backup_start_date, s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken 
,s.backup_start_date 
,CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn 
,CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn 
,CASE s.[type] WHEN 'D' 
THEN 'Full' 
WHEN 'I' 
THEN 'Diff`enter code here`erential' 
WHEN 'L' 
THEN 'Transaction Log' 
END AS BackupType 
,s.server_name 
,s.recovery_model 
FROM msdb.dbo.backupset s 
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id 
WHERE s.database_name = @db_name 
ORDER BY backup_start_date DESC 
,backup_finish_date 

Once we run the query, we would get list of backups happened on the database. This information is picked from MSDB database. 

Below picture is self-explanatory. 

SQL SERVER - Log Shipping Restore Job Error: The file is too recent to apply to the secondary database LS-Restore-02 

Once we found the 「problematic」 backup, we need to restore it manually on secondary database. Make sure that we are using either norecovery or standby option so that other logs can be restored. Once file is restored, the restore job would be able to pick-up from the same place and would catch up automatically. 

    enter code here 

What are the other problems you have seen with Log-shipping? If you can share some of the common errors, it would be of great help for others and I will try to blog about them too with your help. 

Reference: Pinal Dave (https://blog.sqlauthority.com) 
相關問題