2013-03-21 70 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