定时备份SQL SERVER的数据库而且把备份文件复制到另一台电脑 Windows

2021-06-02 95

1. 环境:

a)一台Sql Server 2008 R2 服务器,一天win7工作电脑。

b)服务器操作系统是windows 2008 R2

c)需要将数据库远程备份到192.168.25.253的工作电脑上, 库名保持不变

2. 打开服务器上Sql Server代理服务:

  开始→控制面板→小图标→管理工具→服务→SQL Server 代理 (MSSQLSERVER)→启动

3. 在工作电脑上建立一个共享文件夹, 这里我将e:\db_backup文件夹作为共享文件夹

4. 打开SQL Server Management Studio

 a)点开Sql Server代理, 右键作业→新建作业→名称备份数据库→类别数据库维护→说明备份数据库

--开启 xp_cmdshell
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go

--备份数据库
Declare @strPsw varchar(50)
Declare @strUsr varchar(50) 
Declare @strCmdShell varchar(300)
Declare @strDataBaseName varchar(20)
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 @strDataBaseName='db_cehotel'
--定义本地备份文件的名称
Set @FileFlag=@strDataBaseName + '_db_' + replace(convert(char(20),getdate(),112),' ','')
--定义本地1天前的备份文件名称
Set @FileFlag3=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-1,112),' ','')
--定义远程服务器3天前的备份文件名称
Set @FileFlag2=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-3,112),' ','')
--设置远程服务器的登陆域和用户名
Set @strUsr='192.168.25.253\li'
--设置远程服务器登陆密码
Set @strPsw='ta89333333'
--设置远程服务器链接
Set @strCmdShell= 'net use \\192.168.25.253\db_backup ' + @strPsw + ' /user:' +@strUsr
--设置本地备份文件名称
Set @FullFileName='e:\bak\'+@FileFlag+'.bak'
--设置本地1天前的备份文件名称
set @FullFileName1='e:\bak\'+@FileFlag3+'.bak'
--设置远程服务器3天前的备份文件名称
set @FullFileName2='\\292.168.25.253\db_backup\'+@FileFlag2+'.BAK'
--设置远程服务器保存备份文件目录
Set @ToFileName='\\192.168.25.253\db_backup\'
--Set @ToFileName='e:\Backup\'
--设置为True时,即删除备份,设置为False时,即不删除备份文件
--Set @FlagDel='True'
--设置从本地复制备份文件至远程服务器的语句
Set @SQLStr='copy '+@FullFileName+' '+@ToFileName
--设置删除本地1天前的备份文件
Set @SQLStr2='del '+@FullFileName1 
--设置删除远程服务器3天前的备份文件
Set @SQLStr3='del '+@FullFileName2
--备份数据库 压缩备份 
BACKUP DATABASE @strDataBaseName  TO DISK = @FullFileName  WITH INIT, STATS = 20  
--链接远程服务器 
exec master..xp_cmdshell @strCmdShell
--复制备份文件至远程服务器
exec Master..xp_cmdshell @SQLStr   
--删除1天前本地的备份文件
if (@FlagDel ='True')
exec master.. xp_cmdshell @SQLStr2 
----删除3天前远程服务器备份文件
if (@FlagDel ='True')
exec master.. xp_cmdshell @SQLStr3


最新回复 (0)
返回