每天偶尔检查数据库作业是否失败,发现有错误
select top 10 job_id,run_date,run_time,run_duration,step_name,message from msdb..sysjobhistory where run_status = 0 order by run_date desc,run_time desc
该作业失败。 计划 12(复制代理计划。)调用了该作业。最后运行的是步骤 1(运行代理。)。.
已以用户 NTAUTHORITY\NETWORKSERVICE的身份执行。
无法删除目录 'D:\DataBase\ReplData\unc\*****************************\20150206021846\'。
请查看 xp_cmdshell的安全上下文,并关闭其他可能正在访问该目录的进程。
[SQLSTATE 42000](错误 20015). 该步骤失败。
错误日志消息:
Replication-@rowcount_only 参数值必须是 0、1 或 2。0=7.0 兼容的校验和。1=只检查行计数。2=版本 8.0 中引入的新校验和功能。: agent distribution@rowcount_only 参数值必须是 0、1 或 2。0=7.0 兼容的校验和。1=只检查行计数。2=版本 8.0 中引入的新校验和功能。 scheduled for retry. 无法清除分发事务表。
--查看执行的作业 select * from msdb.dbo.sysjobs where job_id = 'DC0DF572-9339-46ED-84E7-2C1ED622C067'
查看SqlServer代理账户, NT AUTHORITY\NETWORK SERVICE
找到该目录,是快照目录,很久没使用过了。几天前有初始化用过,今天快照到期了,分发清除运行删除。
而代理账户NT AUTHORITY\NETWORK SERVICE 没有操作文件夹的权限
添加用户对象NT AUTHORITY\NETWORK SERVICE
授予所有权限
好了,现在执行[分发清除: distribution]作业,成功!