2017-04-24 50 views
0

我每月進行一次完整備份,然後在兩者之間進行增量備份。是否有其他解決方案而不是僅複製完整備份?

但同時其他用戶可以做完整備份,並打破我的鏈。我知道只有副本纔有完整備份。

但在我的情況下,我不知道什麼時候和誰將做備份,所以我需要找到一個解決方案來實現我的一方,以避免這個問題。

有人有想法或解決方案來實現嗎?非常感謝你。

+1

其他用戶是否有權限進行備份?特別是,如果他們通過不勾選copy_only選項來打破這個鏈條。 – VDK

+2

我建議你的組織控制誰可以更嚴格地執行備份。 –

回答

0

此代碼示例稍微詳細一點以便於理解,但表msdb.dbo.backupset可以幫助您完成此操作。 https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/backupset-transact-sql

declare @MostRecentAuthorizedFullBackup datetime 
declare @MostRecentUnauthorizedNonCopyOnlyBackup datetime 
declare @AuthorizedBackupUser nvarchar(128) = N'YourBackupUser' 
declare @DatabaseName nvarchar(128) = N'YourDatabase' 

select @MostRecentAuthorizedFullBackup = backup_start_date 
from msdb.dbo.backupset 
where database_name = @DatabaseName 
    and is_copy_only = 0 
    and type = 'D' 
    and user_name = @AuthorizedBackupUser 
order by backup_start_date desc 

select @MostRecentUnauthorizedNonCopyOnlyBackup = backup_start_date 
from msdb.dbo.backupset 
where database_name = @DatabaseName 
    and is_copy_only = 0 
    and type = 'D' 
    and user_name <> @AuthorizedBackupUser 
order by backup_start_date desc 

if @MostRecentAuthorizedFullBackup > @MostRecentUnauthorizedNonCopyOnlyBackup 
begin 
    print 'Differential base is good' 
end 
else 
begin 
    print 'Differential base is bad' 
end 
+0

謝謝你的代碼。但我的問題不在於瞭解鏈條是否損壞以及差異基礎是否糟糕。我想知道是否有可以實施的解決方案,無論何時何地進行完全備份,不會影響我的差異? –

+0

答案是否定的。避免破壞的差異基礎的唯一方法是將其他備份限制爲僅複製,並且在沒有阻止其完全備份的能力的情況下無法強制執行該備份。您可以將條件邏輯添加到備份中,以便在由於其他人正在進行非複製備份而導致差異基礎中斷時它將恢復爲完全備份。 –

相關問題