array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } 111string(0) "" int(1) int(10) int(70) int(8640000) string(13) "likecs_art_db" array(1) { ["query"]=> array(1) { ["match_all"]=> object(stdClass)#28 (0) { } } } array(1) { ["createtime.keyword"]=> array(1) { ["order"]=> string(4) "desc" } } int(10) int(0) int(8640000) array(2) { ["docs"]=> array(0) { } ["count"]=> int(0) } SqlServer 自动备份、自动删除7天前备份 - 爱码网
-----sqlserver 数据异地备份   默认删除 七天前的数据
-----该代码可配置成SQLServer作业里做调度,或者配置成任务计划进行执行
----挂载异地盘符
exec master..xp_cmdshell 
'net use w: "\\172.16.30.34\D$"  "726" "/user:172.16.30.34\administrator"', no_output
/*--说明: 
w: 是映射网络路径对应本机的盘符,与下面的备份对应 
\\172.16.30.34\D$    是要映射的网络路径 
172.16.30.34\administrator    
172.16.30.34是远程的计算机名,administrator是登陆的用户名 
726 上面指定的administrator用户的密码 
--*/ 
go
 
go

-----用游标:
declare @s nvarchar(200),@del nvarchar(200)
select  @s='',@del=''

declare datebak cursor for
select 
    [bak]='backup database  '+quotename(Name)+'  to disk =''w:'+Name+'_'+convert(varchar(8),getdate(),112)+'.bak''  with init',
    -----自动删除七天前的备份文件
    [del]='exec master..xp_cmdshell '' del w:'+Name+'_'+convert(varchar(8),getdate()-7,112)+'.bak'', no_output' 
from master..sysdatabases where dbid=37 --这里查询出需要备份的数据库,可以一次性备份多个数据库
open datebak

fetch next from datebak into @s,@del
while @@fetch_status=0
    begin 
        ----对于要删除的备份文件进行一场捕获(解决第一次部分的时候,执行失败的情况)
        begin try
            exec (@del)
        end try
        begin catch
        if @@TRANCOUNT >0
            BEGIN
                print @del
            END 
        end catch 
        exec(@s)
        fetch next from datebak into @s,@del
    end
close datebak
deallocate datebak
go
--删除映射
exec master..xp_cmdshell 'net use w: /delete'

go
  

 

相关文章: