2011-07-24 114 views
2

服務器版:SQL服務器2008R2 客戶端版本的SQL Server Express 2008 R2合併複製 - 觸發射擊這兩個發佈服務器和訂閱

我已經遇到什麼似乎當我跑我的合併複製過程中被鎖定的問題。它似乎是在用戶發生變化並與發佈商同步時發生的。我感到樂觀的是來自觸發器,因爲他們似乎再次向發佈者開火,並可能試圖再次向用戶發送數據。我爲觸發器添加了「NOT FOR REPLICATION」,但這似乎沒有幫助。我也研究並嘗試添加下面的子句。

DECLARE @is_mergeagent BIT 

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

IF @is_mergeagent = 0 --IF NOT FROM REPLICATION 

這似乎也沒有幫助。如何使用插入/更新觸發器處理合並複製?我可以阻止他們「雙」射擊嗎?

總是欣賞信息。

--S

+0

你的意思是他們也開火用戶? –

+0

Hi Aaron,它在訂閱者上初始插入時觸發,然後當它同步時觸發發佈者(當不應該創建第二個條目時),那麼第二個條目在相同同步運行中回到訂閱者處。 ......看起來是在造成鎖定。 – scarpacci

回答

2

不確定關於觸發器觸發,但SESSIONPROPERTY將在這裏給出NULL。所以後續的測試總是失敗。

<Any other string> [given] NULL =輸入無效。

你大概的意思APP_NAME

這至少應該幫助排查...

1

我會有點字段添加到造成問題的表格,並把它稱爲「處理」或類似的東西。將其默認設置爲false,然後在觸發器更新該記錄時將其設置爲true,並在觸發器執行任何操作之前讓觸發器檢查一個假值,否則將不執行任何操作。