定时备份SQL SERVER的数据库并且把备份文件复制到另外一台服务器保存


定时备份SQL SERVER的数据库并且把备份文件复制到另外一台服务器保存。

1、首先在主服务器net share从服务器的一个文件夹(从服务器开启特定用户共享)。
   net share格式:net share DataBase=D:\DataBaseBack
2、在Master数据执行以下语句:
   sp_configure 'show advanced options',1
   reconfigure
   sp_configure 'xp_cmdshell',1
   reconfigure
3、在Master数据库中建立以下存储过程:
ALTER proc [dbo].[Backup_DataBase]
AS
Begin
    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='HlData'

    --定义本地备份文件的名称
    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='Administrator'

    --设置远程服务器登录密码
    Set @strPsw='peterdada'

    --设置远程服务器连接
    Set @strCmdShell= 'net use \\15.5.245.92\DataBase ' + @strPsw + ' /user:' +@strUsr

    --设置本地备份文件名称
    Set @FullFileName='D:\HlDataBack\'+@FileFlag+'.BAK'

    --设置本地1天前的备份文件名称
    set @FullFileName1='D:\HlDataBack\'+@FileFlag3+'.BAK'

    --设置远程服务器3天前的备份文件名称
    set @FullFileName2='\\15.5.245.92\DataBase\'+@FileFlag2+'.BAK'

    --设置远程服务器保存备份文件目录
    Set @ToFileName='\\15.5.245.92\DataBase\'

    --设置为True时,即删除备份,设置为False时,即不删除备份文件
    Set @FlagDel='True'

    --设置从本地复制备份文件至远程服务器的语句
    Set @SQLStr='copy '+@FullFileName+' '+@ToFileName

    --设置删除本地1天前的备份文件
    Set @SQLStr2='del ' +@FullFileName1

    --设置删除远程服务器3天前的备份文件

    Set @SQLStr3='del ' +@FullFileName2

    --备份EliteUC数据库
    BackUp DataBase  @strDataBaseName  To Disk=  @FullFileName   with init

    --连接远程服务器
    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
    
End

4、在SQL Server代理中增加一个代理作业,定时执行上面的存储过程

你可能感兴趣的:(SQL,Server2005,定时备份,复制到另外一台服务器保存)