MSSQL作业备份

MSSQL Server维护计划异常,使用作业脚本配合存储过程进行定时备份脚本示例

USE [WRGGXX_ULearning]
GO
/****** Object:  StoredProcedure [dbo].[usp_backup_WRGGXX_ULearning]    Script Date: 07/15/2021 11:09:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Yangrf>
-- Create date: <2020-3-12>
-- Description:	<系统故障,无法自动备份,使用手动备份>
-- =============================================
ALTER PROCEDURE [dbo].[usp_backup_WRGGXX_ULearning]
AS
BEGIN
	SET NOCOUNT ON;

    declare @dbName varchar(50); 
	declare @pathName varchar(50);  
	declare @filename varchar(200);  
	declare @filename2 varchar(200);  
	declare @datetime varchar(50);  
	declare @weekname varchar(50);  
	declare @weeknametmp varchar(4);  
	declare @weekday int;  
	declare @backupSetId int;
	  
	set @dbName='WRGGXX_ULearning';  
	set @pathName='D:\db_backup\';  
	  
	set @weekname=datename(weekday,getdate());  
	set @datetime =  convert(varchar(20),getdate(),112);  
	set @weeknametmp=substring(@weekname,3,1);  
	  
	set @filename=@pathName+@dbName+'\'+@dbName+'_backup_'+DateName(year,GetDate())+'_'+DateName(month,GetDate())+'_'+DateName(day,GetDate())+'_'+DateName(hour,GetDate())+DateName(minute,GetDate())+DateName(second,GetDate())+'_'+DateName(MILLISECOND,GetDate());  
	set @filename2=@filename+'.bak';  
	 
	if (@weeknametmp='一')  
		set @weekday=1;  
	else if (@weeknametmp='二')  
		set @weekday=2;  
	else if (@weeknametmp='三')  
		set @weekday=3;  
	else if (@weeknametmp='四')  
		set @weekday=4;  
	else if (@weeknametmp='五')  
		set @weekday=5;  
	else if (@weeknametmp='六')  
		set @weekday=6;  
	else if (@weeknametmp='日')  
		set @weekday=0;  
	  
	if (@weekday=0)  
		begin  
			BACKUP DATABASE [WRGGXX_ULearning] TO  DISK = @filename2 WITH NOFORMAT, NOINIT,  NAME = @filename, SKIP, REWIND, NOUNLOAD,  STATS = 10 ;

			
			select @backupSetId = position from msdb..backupset where database_name=@dbName and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=@dbName )
			if @backupSetId is null begin raiserror(N'验证失败。找不到数据库“WRGGXX_ULearning”的备份信息。', 16, 1) end
			RESTORE VERIFYONLY FROM  DISK =@filename2 WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
		end  
	else  
		begin  
			BACKUP DATABASE [WRGGXX_ULearning] TO  DISK = @filename2 WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = @filename, SKIP, REWIND, NOUNLOAD,  STATS = 10

			select @backupSetId = position from msdb..backupset where database_name=@dbName and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=@dbName )
			if @backupSetId is null begin raiserror(N'验证失败。找不到数据库“WRGGXX_ULearning”的备份信息。', 16, 1) end
			RESTORE VERIFYONLY FROM  DISK = @filename2 WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND

		end
END

image.png

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WinJayX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值