MSSQL定时备份数据库到其他服务器

本文介绍了一种使用SQL Server存储过程实现数据库备份的方法,并详细展示了如何通过存储过程将数据库备份到本地及远程服务器,同时自动清理旧备份。此外,还提供了创建定时作业以定期执行该备份过程的具体步骤。
摘要由CSDN通过智能技术生成

第一步:创建存储过程;

从网上找了一个,一直执行不成功,后面修改了一下,以下是修改后调试成功的版本(原版地址:http://blog.itpub.net/29151695/viewspace-1250598/)

CREATE proc Backup_DataBase_A1

@strDataBaseName VARCHAR(50),--要备份的数据库名称
@strUsr VARCHAR(50),--共享目录用户名
@strPsw VARCHAR(50),--共享目录登录密码
@strLocalPath VARCHAR(150), --本地存储路径
@strNetPath VARCHAR(150) --共享目录存储路径

as  
Declare @strCmdShell varchar(300)
Declare @FullFileName Varchar(200)
Declare @FullFileName1 Varchar(200)
Declare @FullFileName2 Varchar(200)
Declare @FileFlag varchar(50) 
Declare @FileFlag2 varchar(50) 
DECLARE @FileFlag3 varchar(50)
Declare @ToFileName varchar(200)  
Declare @SQLStr varchar(500)
Declare @SQLStr2 varchar(500)   
Declare @SQLStr3 varchar(500)    
Declare @FlagDel varchar(20)

--定义本地备份文件的名称
Set @FileFlag=@strDataBaseName + '_db_' + replace(convert(char(20),getdate(),112),' ','')
--定义本地1天前的备份文件名称
Set @FileFlag3=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-1,112),' ','')

--设置本地备份文件完整路径
Set @FullFileName=@strLocalPath+'\'+@FileFlag+'.BAK'
--设置本地1天前的备份文件完整路径
set @FullFileName1=@strLocalPath+'\'+@FileFlag3+'.BAK'


--定义远程服务器3天前的备份文件名称
Set @FileFlag2=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-3,112),' ','')

--设置远程服务器连接
Set @strCmdShell= 'net use '+@strNetPath+' "' + @strPsw + '" /user:' +@strUsr
--设置远程服务器3天前的备份文件完整路径
set @FullFileName2=@strNetPath+'\'+@FileFlag2+'.BAK'
--设置远程服务器保存备份文件目录
Set @ToFileName=@strNetPath+'\'+@FileFlag+'.BAK'

--设置为True时,即删除备份,设置为False时,即不删除备份文件
Set @FlagDel='True'
--设置从本地复制备份文件至远程服务器的语句
Set @SQLStr='copy '+@FullFileName+' '+@ToFileName
--设置删除本地1天前的备份文件
Set @SQLStr2='del ' +@FullFileName1 
--设置删除远程服务器3天前的备份文件
Set @SQLStr3='del ' +@FullFileName2

--备份EliteUC数据库 
IF(@strLocalPath!='')
BackUp DataBase  @strDataBaseName  To Disk=  @FullFileName   with init 

PRINT @strCmdShell 
--连接远程服务器 
IF(@strNetPath!='' )
exec master..xp_cmdshell @strCmdShell

PRINT @SQLStr 
--复制备份文件至远程服务器
IF(@strNetPath!='')
exec Master..xp_cmdshell @SQLStr 
  
PRINT @SQLStr2 
--删除1天前本地的备份文件
if (@FlagDel ='True' AND @strLocalPath!='')
exec master.. xp_cmdshell @SQLStr2 

PRINT @SQLStr3 
--删除3天前远程服务器备份文件
if (@FlagDel ='True' AND @strNetPath!='')
exec master.. xp_cmdshell @SQLStr3

go

如果存储过程执行过程中有碰到这个错误:SQL Server 阻止了对组件 'xp_cmdshell' 的 过程 'sys.xp_cmdshell' 的访问,执行下方的语句即可:

sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go


第二步:创建作业定时执行存储过程






确定后执行即可


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值