我正在尝试将我们的 SQL2005 事务复制环境中的最大事务保留期从默认的 72 小时更改为 120 小时。
通过 T-SQL 或 GUI 我收到以下消息:
消息 14294,级别 16,状态 1,过程 sp_verify_job_identifiers,第 25 行提供 @job_id 或 @job_name 来标识作业。
我正在运行的 T-SQL 如下:
sp_changedistributiondb @database ='distribution',@property ='max_distretention',@value = 120
有人有什么想法吗?
答案1
我认为下面的代码是失败的原因。我通过运行 sp_helptext sp_changedistributiondb 并查看存储过程调用 sp_verify_job_identifiers 来获得此信息。
看起来changeddistributiondb在运行sp_update_jobstep时更新分发清理代理作业时遇到了问题:
SELECT @command = 'EXEC dbo.sp_MSdistribution_cleanup @min_distretention = ' +
CONVERT(nvarchar(12), @new_min_distretention) + ', @max_distretention = ' +
CONVERT(nvarchar(12), @max_distretention)
EXEC @retcode = msdb.dbo.sp_update_jobstep @job_name = @agentname, @step_id = 1,
@command = @command
也许这项工作已被删除,或者发生了其他奇怪的事情,无论哪种情况,您都应该能够手动修改工作步骤。
编辑:清理代理在包含分发数据库的服务器上运行。它会删除复制历史记录,默认情况下每 10 分钟运行一次。该作业应如下所示:
姓名: 代理历史清理:分发
类别:REPL-历史清理
脚步:(1)运行代理
数据库:分配
**命令:**EXEC dbo.sp_MShistory_cleanup @history_retention = 48