SQL数据库自动备份+远程(备忘)

具体步骤如下:
  一、开始菜单中打开SQL Server Management Studio,展开窗口左边的SQL服务器;
     二、SQL Server代理,右键选择"启动"(未启动的话); (图1)
         三、选择“作业->新建作业”; (图2)
       四、在"常规"中输入作业的名称; (图3)
       五、新建步骤,选择T-SQL,命令中输入下面语句(红色部分要根据自己的实际情况更改,D:"bak"改为自己的备份路径,databasename修改为想备份的数据库的名称) (图4)


DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath = REPLACE(@strPath, ':' , '.')
set @strPath = 'D:"bak"' + @strPath + '.bak'       
BACKUP DATABASE [databasename] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT

如:DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath = REPLACE(@strPath, ':' , '.')
set @strPath = 'C:/bak/JJ_sp_' + @strPath + '.bak'
BACKUP DATABASE [JJ_sp] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT

        六、添加计划,设置频率,时间等;(图5)
确定,完成。
        七、注意在"服务"里面启用 SQL Server Agent 服务。(图6)

 

***************************************下面为远程自动备份***********************

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--打开xp_cmdshell
exec master..xp_cmdshell --使用xp_cmdshell
'net use h: \\23.170.201.68\data_back$ "" /user:192.168.10.29\administrator' --net连接 ,asd为共享的文件夹,必须可修改。“” 是密码,administrator用户名
declare @a char(80)
select @a ='z:\JJ_sp_' + replace(replace(convert(varchar(19),getDate(),120),' ','-'),':','-') + '.bak' --根据时间定义文件备份名称
backup database JJ_sp to disk= @a   --JJ_sp 为需要备份的数据库
exec master..xp_cmdshell 'net use z: /delete' --删除net连接
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;--关闭xp_cmdshell .只是将上面的后面的那个"1"改成"0"就可以了

 

将上段代码COPY到新建步骤的代码中。即可

******************以下为备份后压缩、删除原文件、定期删除15天前的备份、本地与远程都备份****************

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--打开xp_cmdshell
exec master..xp_cmdshell --使用xp_cmdshell
'net use h:
\\23.170.201.68\data_back$ "" /user:23.170.201.68\administrator' --net连接 ,data_back$为隐藏共享的文件夹,必须可修改。“” 是密码,administrator用户名


declare

@prefix nvarchar(100),

@datefile nvarchar(100),

@datefile1 nvarchar(100),

@bakfile nvarchar(100),

@rarfile nvarchar(100),

@rarfile1 nvarchar(100),

@rarfile2 nvarchar(100),

@delcmd nvarchar(100),

@delcmd1 nvarchar(100),

@delcmd2 nvarchar(100),

@copycmd nvarchar(100),

@rarcmd nvarchar(150)


set @prefix='S:\databack\JJ_sp\' --备份文件夹

set @datefile='JJ_sp_'+replace(replace(replace(convert(varchar(16),getdate(),120),'-',''),' ','-'),':','') --按时间取得文件名称用于备份

set @datefile1='JJ_sp_'+replace(replace(replace(convert(varchar(16),getdate()-7,120),'-',''),' ','-'),':','') --按时间取得文件名称用于删除

set @bakfile=@prefix+@datefile+'.bak'

set @rarfile='S:\databack\JJ_sp\'+@datefile+'.rar'

set @rarfile1='S:\databack\JJ_sp\'+@datefile1+'.rar' --删除7天前压缩路径 本地

set @rarfile2='H:\JJ_sp\'+@datefile1+'.rar' --删除7天前压缩路径 远程

BACKUP DataBASE JJ_sp TO DISK = @bakfile WITH INIT , NOUNLOAD , NAME = N'JJ_sp', NOSKIP , STATS = 10, NOFORMAT --备份数据库

set @rarcmd ='C:\Progra~1\WinRAR\WinRAR.exe a -o+ -m5 -ibck -ep '+@rarfile+' '+@bakfile --进行加密压缩

exec master..xp_cmdshell @rarcmd

set @delcmd = 'del '+@prefix+ '*.bak'   --删除原始文件

exec master..xp_cmdshell @delcmd


set @copycmd='copy '+@rarfile+' '+ 'h:\JJ_sp\' -- 设定备份路径

exec master..xp_cmdshell @copycmd       --copy压缩文件进行备份


set @delcmd1 = 'del '+@rarfile1+''   --删除7天前的备份文件 本地
exec master..xp_cmdshell @delcmd1

set @delcmd2 = 'del '+@rarfile2+''   --删除7天前的备份文件 远程
exec master..xp_cmdshell @delcmd2

exec master..xp_cmdshell 'net use h: /delete' --删除net连接
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;--关闭xp_cmdshell .只是将上面的后面的那个"1"改成"0"就可以了

 

转载于:https://www.cnblogs.com/huaga/archive/2009/10/17/1585107.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值