由于经常需要同步测试并更改代理配置文件属性,所以总结成脚本,方便测试.
可更新订阅的冲突策略有两种情况:一是在发布中冲突,即订阅数据到发布时冲突;二是在订阅冲突,发布数据到订阅时冲突。
队列读取器设置的是:发布到订阅的冲突策略
代理配置参数位置:
里面的参数是需要更改的,未显示的参数,则是没有添加到配置文件的。但是取消上面的勾选是可以看到还有那些配置参数。
使用复制代理配置文件参考:https://msdn.microsoft.com/zh-cn/library/ms147893(v=sql.100).aspx
select * from msdb.dbo.MSagent_profiles
查看指定代理的配置文件 (在分发服务器任何数据库执行)
exec sp_help_agent_profile @agent_type = 9 --9为队列读取器代理
更改存储在MSagent_profiles表中的配置文件描述 (在分发服务器任何数据库执行)
exec sp_change_agent_profile @profile_id = 11 ,@property = 'description' ,@value = '用于已复制的排队事务读取器的代理配置文件。'
exec sp_add_agent_parameter @profile_id = 11 --配置文件的 ID ,@parameter_name = 'ResolverState' --参数名称 ,@parameter_value = 2 --参数值(冲突以订阅服务器为准)
exec sp_change_agent_parameter @profile_id = 11 --配置文件的 ID ,@parameter_name = 'ResolverState' --参数名称 ,@parameter_value = 2 --参数值(冲突以订阅服务器为准)
发布属性设置的是:订阅到发布的冲突策略
-- 在发布冲突则以订阅为准(发布数据库执行) EXEC sp_changepublication @publication = N'publicationName' , @property = N'conflict_policy' , @value = N'sub wins'
更多参数参考:复制代理 sp_changepublication