我编写了一个简单的存储过程来备份完整备份、差异备份和日志备份。这是我的存储过程:
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作业,每周,每天和每5分钟,即每周完整备份,每日差异和日志备份每5分钟。
您认为这个存储过程写得不正确吗?或者您认为它对于我的场景来说应该没问题吗?
发布于 2013-03-21 17:08:44
在我看来很好,如果这是一个编程练习,很好。(您需要包括错误捕获和报告)。但是,如果您不使用SQL express,那么如上所述,维护计划将通过错误报告来完成所有这些工作。如果你使用的是SQL Express,那么免费的SQLBackupAndFTP http://sqlbackupandftp.com/是一个很好的程序,我多年来一直在使用和推荐它。它有很好的错误报告功能,这是我最近体验到的,当msdb被损坏的时候。它还将备份到亚马逊S3帐户(付费版本,但不多)。完整的故事在这里:http://ava.co.uk/blog/2013/3/21/a-backup-problem-and-the-solution.aspx
https://stackoverflow.com/questions/15540525
复制相似问题