【Sql Server】实现数据库定时自动备份详细一步步操作(图文)

发布时间 2023-04-05 22:38:46作者: 四海骄阳

https://blog.51cto.com/u_15654527/5736711

http://www.taodudu.cc/news/show-5345289.html

一、新建数据库(如:数据库定时备份)


 二、新建存储过程,代码如下,注意3个地方需要改数据库名称


USE [数据库定时备份]
GO
/****** Object: StoredProcedure [dbo].[定时备份_Huji] Script Date: 10/03/2022 17:33:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

 

--Alter PROCEDURE [dbo].[类_定时备份]
ALTER PROCEDURE [dbo].[定时备份_Huji]
@bak_path varchar(30) = 'D:\sql定时备份' -- 表名称

As
BEGIN
SET NOCOUNT ON;


declare @bak_path_bf varchar(150) = 'D:\sql定时备份\Huji_'+convert(varchar(10),getdate(),120)+'_'+DateName(hour,GetDate()) +'_'+DateName(minute,GetDate()) +'_'+DateName(second,GetDate())+'.bak' -- 表名称
BACKUP DATABASE Huji TO DISK = @bak_path_bf


--declare @bak_path nvarchar(4000)
set @bak_path ='D:\sql定时备份\' --备份路径;
declare @baktype int
set @baktype = 0 --备份类型为全备,1为差异备,2为日志备份

declare @type int
set @type = 3 --设置需要备份的库,0为全部库,1为系统库,2为全部用户库,3为指定库,4为排除指定库;
declare @dbnames nvarchar(4000)
set @dbnames ='Huji' --需要备份或排除的数据库,用,隔开,当@type=3或时生效
declare @overdueDay int
set @overdueDay = 1 --设置过期天数,默认天;
declare @compression int
set @compression =0 --是否采用sql2008的压缩备份,0为否,1为采用压缩


-- ========================================================= 【删除过期数据库】

begin try

declare @d varchar(100)
set @d=convert(varchar,dateadd(day,-1,getdate()),120); -- [-30 是删除之前的天数]
EXECUTE master.dbo.xp_delete_file 0,N'D:\sql定时备份\',N'bak',@d; -- [修改(2)]

end try
begin catch
end catch

--declare @cmd varchar (1024)
--SET @Cmd=('master.dbo.xp_cmdshell '+'''xcopy \\Win-r85nangi77s\新建文件夹\CityCardAdmin_'+convert(varchar(10),getdate(),120)+'_'+DateName(hour,DATEADD(hour,-1,GETDATE())) +'.bak'+' D:\三联数据库 '+''+' /y/s'+'''')
--EXEC (@Cmd)

END
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
三、右击,新建作业


 1、常规
名称:定时备份(每天12.30)

说明:每天12.30备份一次

 

 2、步骤

 

 

步骤名称:定时运行备份脚

代码:

USE [数据库定时备份]
GO

DECLARE @return_value_1 int

EXEC @return_value_1 = [dbo].[定时备份_Huji]

SELECT 'Return Value' = @return_value_1

GO

DECLARE @return_value_2 int

EXEC @return_value_2 = [dbo].[定时备份_mvc]

SELECT 'Return Value' = @return_value_2