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