2013-03-21 108 views
1

我編寫了一個簡單的存儲過程來備份FULL,差異和日誌備份。這是我的存儲過程:用於完整,差異和日誌備份的備份存儲過程

Alter PROCEDURE BackupDB 
( 
    @BaseLocation varchar(1024), 
    @BackupType  varchar(32) 

) 
AS 
BEGIN 

    Declare @DBName  varchar(255) = db_name() 

    Declare @FileName varchar(256) 

    Declare @Date datetime = getdate() 
    Set @BackupType = UPPER(@BackupType) 

    Set @FileName = @DBName + '_' + Cast(Year(@Date) as varchar(4)) + '_' + 
        Right('00' + Cast(Month(@Date) as varchar(2)),2) + '_' + 
        Right('00' + Cast(Day(@Date) as varchar(2)),2) + '_' + 
        Right('00' + Cast(DatePart(hh,@Date) as varchar(2)),2) + '_' + 
        Right('00' + Cast(DatePart(mi,@Date) as varchar(2)),2) + '_' + 
        Right('00' + Cast(DatePart(ss,@Date) as varchar(2)),2) + '_' + 
        Right('000' + Cast(DatePart(ms,@Date) as varchar(3)),3) + '_' + UPPER(@BackupType) +      
        (Case When @BackupType = 'FULL' Or @BackupType = 'DIFFERENTIAL' Then '.BAK' Else '.TRN' End) 

    Declare @FullPath varchar(1280) = '' 

    If Right(@BaseLocation,1) <> '\' 
    Begin 
     Set @BaseLocation = @BaseLocation + '\' 
    End 
    Set @FullPath = @BaseLocation + @FileName 
    Print @FullPath 


    If @BackupType = 'FULL' 
    Begin 
     Backup database @DBName To Disk = @FullPath 
    End 
    Else If @BackupType = 'DIFFERENTIAL' 
    Begin 
     Backup database @DBName To Disk = @FullPath WITH DIFFERENTIAL 
    End 
    Else If @BackupType = 'LOG' 
    Begin 
     BACKUP LOG @DBName 
      TO Disk = @FullPath 
    End 

END 
GO 

我跑我的存儲過程,它似乎完全在傳遞的參數現在的工作,下一步是創建這樣的SQL作業。但是在我這樣做之前,我想知道這是正確的程序嗎?我讀過很多文章,他們似乎都指出了一條「測試備份策略」。

現在,我將每週創建一個SQL JOB,每天和每5分鐘一次,即每5分鐘每週完整備份,每日差異備份和日誌備份。

您是否認爲這個存儲過程寫錯了或者您認爲它對我的情況應該沒問題?

+1

您的存儲過程loosk沒有問題。你已經測試過了。但是,您爲什麼不使用MaintenancePlan,可以創建每週完整備份計劃,每日差異備份計劃,每日事務日誌備份計劃。我認爲這比你的商店程序+工作更穩定。而且您還需要添加異常處理和錯誤日誌,維護計劃會自動維護歷史和日誌。 – ljh 2013-03-21 06:29:26

回答

3

這對我來說很好,如果這是一個編程練習,那很好。 (您需要包括錯誤捕獲和報告)。但是,如果您沒有使用SQL Express,那麼正如上面所指出的那樣,維護計劃將在錯誤報告中執行所有這些。如果您使用的是SQL Express,那麼免費的SQLBackupAndFTP http://sqlbackupandftp.com/是一個很好的程序,我已經使用並推薦多年。它具有出色的錯誤報告,這是我最近經歷的,當msdb變得腐敗的時候。它也將備份到Amazon S3帳戶(付費版本,但不是很多)。這裏的全文:http://ava.co.uk/blog/2013/3/21/a-backup-problem-and-the-solution.aspx