日期:2014-05-18  浏览次数:20631 次

sqlserver2005中自动删除之前备份的计划总是失败?????
我开启了sqlserver代理,建立了自动备份和删除的计划作业。我运行这个作业后,备份作业成功了,但是删除总是不成功。我在网上找了好几种代码都不行:
第一种:
SQL code
DECLARE @OLDDATE DATETIME
SELECT @OLDDATE=GETDATE()-5
EXECUTE master.dbo.xp_delete_file 0,N'E:\db_bakup',N'bak',@olddate,1


运行报错:已以用户 NT AUTHORITY\SYSTEM 的身份执行。 执行扩展存储过程时出错: 参数无效 [SQLSTATE 42000] (错误 22049). 该步骤失败。

第二种:
SQL code
declare  @sql  varchar(100)   
set  @sql='del  E:\db_bakup'
+rtrim(convert(varchar,getdate()-3,112))+'.bak'  
exec  master..xp_cmdshell  @sql


运行报错:已以用户 NT AUTHORITY\SYSTEM 的身份执行。 SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。 [SQLSTATE 42000] (错误 15281). 该步骤失败。

体能提供一个可以成功运行的代码 啊?或者帮我看看错误在哪里啊?



------解决方案--------------------
第一个是日志格式问题吗?
参数无效
把 @olddate 换成 '2012-08-01' 试试


------解决方案--------------------
'xp_cmdshell' 没有启用,你是不是在备份中用到了'xp_cmdshell'? sp_configure 可以启用'xp_cmdshell',不过一般不建议开启,安全性问题。 如果只是做备份的话,直接用Maintainplan就可以了