Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 合并复制-在发布服务器和订阅服务器上触发_Sql Server_Sql Server 2008_Replication_Sql Server Express - Fatal编程技术网

Sql server 合并复制-在发布服务器和订阅服务器上触发

Sql server 合并复制-在发布服务器和订阅服务器上触发,sql-server,sql-server-2008,replication,sql-server-express,Sql Server,Sql Server 2008,Replication,Sql Server Express,服务器版本:SQL Server 2008R2 客户端版本:SQL Server Express 2008R2 在运行合并复制过程时,我遇到了似乎是锁定问题的问题。这似乎是在订阅服务器上进行更改并与发布服务器同步时发生的。我敢肯定的是,这是来自触发器,因为它们似乎再次向发布者开火,并可能试图再次向订阅者发送数据。我在触发器中添加了“不用于复制”,但这似乎没有什么帮助。我还研究并尝试添加以下条款 DECLARE @is_mergeagent BIT SELECT @is_mergeagent =

服务器版本:SQL Server 2008R2 客户端版本:SQL Server Express 2008R2

在运行合并复制过程时,我遇到了似乎是锁定问题的问题。这似乎是在订阅服务器上进行更改并与发布服务器同步时发生的。我敢肯定的是,这是来自触发器,因为它们似乎再次向发布者开火,并可能试图再次向订阅者发送数据。我在触发器中添加了“不用于复制”,但这似乎没有什么帮助。我还研究并尝试添加以下条款

DECLARE @is_mergeagent BIT

SELECT @is_mergeagent = convert(BIT, sessionproperty('replication_agent'))

IF @is_mergeagent = 0 --IF NOT FROM REPLICATION
这似乎也没什么帮助。如何使用插入/更新触发器处理合并复制?我能阻止他们“双重”开火吗

永远感谢你提供的信息


--S

我会在导致问题的表中添加一个位字段,并将其称为“已处理”或类似的内容。当触发器更新该记录时,将其默认值设置为false,然后将其设置为true,并在执行任何操作之前检查触发器的false值,否则将不执行任何操作。

不确定触发器是否触发,但此处将给出NULL。因此,后续测试总是失败


这至少有助于故障排除…

您的意思是他们也在订阅服务器上启动吗?嗨,Aaron,它在订阅服务器上的初始插入时启动,然后在同步时在发布服务器上启动(不应该启动时创建第二个条目)然后,第二个条目在同一个同步运行中返回到订阅服务器…这似乎是导致锁定的原因。