新建一个作业:清除作业的历史记录的
declare @s varchar(20) 
set @s=convert(char(11),dateadd(d,-7,getdate()),121)+'23:00:00'
EXEC msdb.dbo.sp_purge_jobhistory  @oldest_date=@s
GO但是运行的时候报错了,结果历史记录也没清除
日期 2010-8-10 23:30:00
日志 作业历史记录 (清除作业历史记录)步骤 ID 1
服务器 DZH-CCDB1
作业名称 清除作业历史记录
步骤名称 clear job
持续时间 00:00:00
SQL 严重性 0
SQL 消息 ID 14226
已通过电子邮件通知的操作员
已通过网络发送通知的操作员
已通过寻呼通知的操作员
重试次数 0实在找不到那里错了,脚本都是好的,也没什么语法错误。请高手帮忙

解决方案 »

  1.   

    declare @s varchar(20)
    改为datetime试试,不过应该不是这个问题。
      

  2.   


    这种清除作业历史记录针对那个库有关系吗?
    作业脚本没有语法错误,运行的时候报错就是上面说的SQL 消息 ID 14226 但不知道是什么问题?
    但是我执行其他的作业都可以正常运行的。。
      

  3.   


    对的。。确实收到执行作业里面的内容是成功的。但用作业自动执行就报SQL 消息 ID 14226 也没执行成功
      

  4.   

    参考下:
    http://blog.csdn.net/superpander/archive/2009/08/15/4448974.aspx
      

  5.   

    默认情况下,只有 sysadmin 固定服务器角色的成员或 SQLAgentOperatorRole 固定数据库角色的成员才可以执行此存储过程。sysadmin 的成员可以清除所有本地和多服务器作业的历史记录。SQLAgentOperatorRole 的成员只可以清除所有本地作业的历史记录。你检查下运行这个脚本的用户和sql agent的运行账户。
      

  6.   

    权限问题
    参考:http://blog.csdn.net/superpander/archive/2009/08/15/4448974.aspx
      

  7.   


    楼上提供的这个URL,看不懂。能给具体的实例吗/??
      

  8.   

    检查
    开始--->设置--->控制面板--->管理工具--->服务--->sql server agent--->右键属性--->登陆账户
    和下面账户:
    sqlserver 管理-->Sql Server代理-->作业--->右键--->找执行的账户,账户改成dbo试试
      

  9.   

    运行的时候报错就是上面说的SQL 消息 ID 14226 但不知道是什么问题?14226 错误内容为清除了 %1! 个历史记录条目。所以如果没有一周前的作业存在则是正常的,另外可以将作业失败保存为文本。