求助备份语句!
我在备份的时候,备份的文件不能覆盖,备份的文件名是备份时的时间。
我怎么活的设置时的备份时间?因为我要每个月第一天完全备份,其它时间差异备份,并且维护是删除三个月前的备份纪录。
这是我完全备份代码:
use msdb
BEGIN TRANSACTION
DECLARE @JobID BINARY(16)
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
declare @path varchar(1000),@dbname varchar(250)
set @path='d:\backup\' --用户设置的备份路径
set @dbname='test' --要备份的数据库名
--备份处理
declare @sql varchar(8000)
IF (SELECT COUNT(*) FROM syscategories WHERE name = N'[Uncategorized (Local)]') < 1
EXECUTE sp_add_category @name = N'[Uncategorized (Local)]'
--— 删除同名的警报(如果有的话)。
SELECT @JobID = job_id
FROM sysjobs
WHERE (name = N'Test 备份')
IF (@JobID IS NOT NULL)
BEGIN
-- 检查此作业是否为多重服务器作业
IF (EXISTS (SELECT *
FROM sysjobservers
WHERE (job_id = @JobID) AND (server_id <> 0)))
BEGIN
-- 已经存在,因而终止脚本
RAISERROR (N'无法导入作业“Test 备份”,因为已经有相同名称的多重服务器作业。', 16, 1)
GOTO QuitWithRollback
END
ELSE
-- 删除[本地]作业
EXECUTE msp_delete_job @job_name = N'Test 备份'
SELECT @JobID = NULL
END
BEGIN
-- — 添加作业
EXECUTE @ReturnCode = sp_add_job @job_id = @JobID OUTPUT , @job_name = N'Test 备份'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
--— 添加作业步骤
EXECUTE @ReturnCode = sp_add_jobstep @job_id = @JobID, @step_id = 1,
@step_name = N'第 1 步',
@command = N'backup database ['+dbname+'] to disk=N'+@path+@dbname+convert(varchar,getdate(),102)+''.bak''''
@subsystem = N'TSQL', @retry_interval = 0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = sp_update_job @job_id = @JobID, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
--— 添加作业调度
EXECUTE @ReturnCode = sp_add_jobschedule @job_id = @JobID, @name = N'第 1 调度',
@freq_type = 4, @active_start_date = 20030917, @active_start_time = 102800,
@freq_interval = 1, @freq_subday_interval = 0, @freq_relative_interval = 0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
--— 添加目标服务器
EXECUTE @ReturnCode = sp_add_jobserver @job_id = @JobID
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
可总提示备份那一行@command错误,是代码的问题吗?帮我,谢谢!