局域网自动备份删除

 作业的操作

企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业

--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)" --如:下面的SQL腳本
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
                      EXEC 存储过程名 ... --该存储过程用于创建表

--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排  


然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. 


--以下代码放在作业里做调度,自动备份、自动删除4天前备份

--创建映射
exec master..xp_cmdshell 'net use w: /DatabaseBackup$  "password"/user:Roy',NO_OUTPUT
go
-----2000用游标:
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()-4,112)+'.bak'', no_output' 
from master..sysdatabases where dbid>4 --不备份系统数据库
open datebak

fetch next from datebak into @s,@del
while @@fetch_status=0
    
begin
        
exec (@del)
        
exec(@s)
        
fetch next from datebak into @s,@del
    
end
close datebak
deallocate datebak
go
--删除映射
exec master..xp_cmdshell 'net use w: /delete'

go


--2005用max支持2G的字符串
declare @s nvarchar(max),@del nvarchar(max)
select  @s='',@del=''

select 
    
@s=@s+
        
char(13)+'backup database  '+quotename(Name)+'  to disk =''w:'+Name+'_'+convert(varchar(8),getdate(),112)+'.bak''  with init',
    
@del=@del+
        
char(13)+'exec master..xp_cmdshell '' del w:'+Name+'_'+convert(varchar(8),getdate()-4,112)+'.bak'', no_output' 

from master..sysdatabases where dbid>4 order by dbid asc

exec (@del)

exec(@s)


posted @ 2007-08-25 11:42  正牌风哥  阅读(149)  评论(0编辑  收藏  举报