2

我希望有人能幫助我一個非常奇怪的問題。SQL Server 2005複製完整性違反SQL Server,錯誤號:28549

當用戶同步他們的設備,他們收到此錯誤:

The row operation cannot be reapplied due to an integrity violation. Check the Publication filter. [ Table = ASSET_DETAIL,Operation = Insert/Update,RowGuid = {C92038E4-18EA-EE11-4C9F-2952CDECFCC7} ] HRESULT 0x80040E2F (28549)

當我們去到服務器,並查詢該行及其母公司行(表稱爲資產)似乎是有效的和正確的。當我們探索完整的過濾器樹(爲了更好的描述),所有的數據看起來都是正確的。

從我們可以在我們的DB中看到的數據應該要去訂閱服從參照完整性約束到您的數據庫。它也服從發佈過濾器。

是否有原因導致用戶遇到此問題?我們如何解決這個問題?

另外,是否有可能準確記錄發送到設備的數據 - 如果不是數據,正在針對sdf文件運行的語句以確定發生了什麼?

預先感謝您的幫助,

Morrislgn

+0

我們有完全相同的問題。在一個實例中,我們能夠通過移除有問題的外鍵來解決它,並試圖通過不執行參照完整性來實現。我在這個問題上提供了一個獎勵,因爲關於這個問題的信息很少。最近在Microsoft connect上發佈了一個類似問題,但沒有解決方法:http://connect.microsoft.com/SQLServer/feedback/details/668349/sql-ce-web-sync-pull-subscription-fails-to-initialize-違反了完整性約束32位平臺上的列或表的完整性約束64位但成功 – 2011-07-21 09:50:01

回答

1

命令通常通過存儲過程應用的用戶。當用戶重新連接時查看運行情況和參數,運行分析器。這可能會讓你知道發生了什麼。不幸的是,我不能更具體。

+0

我們試過這個,但沒有得到太多,我們是能感覺到。根據我們從設備獲得的信息,我們得到了行指導和表格,但我們無法進一步追蹤它。 – Morrislgn 2011-02-10 15:52:19

2

不知道這在技術上是否是答案,但它是我們遇到的問題的答案。

我們發現一位同事在我們的數據庫中刪除了FK關係,並且忽略向任何人通知它。所以當我們在查看數據庫和數據時,一切都很好。

只有當我們將模式與我們的測試版本進行比較時,我們才意識到發生了什麼。

因此,這種情況下的答案是驗證架構與單獨的數據庫。

0

它是否與約束上使用「不爲複製」子句有關。請參閱http://msdn.microsoft.com/en-us/library/ms180843.aspxhttp://msdn.microsoft.com/en-us/library/ms152529.aspx

因此,當使用OrderHeaders和OrderLines的複製時,複製可能會在Orderheader記錄之前將OrderLines插入到訂閱服務器中,然後您會收到違規。

指定不用於複製意味着在通過複製系統插入行時,不會對約束進行檢查,因爲它們已在發佈者處製作。