Replication

創建訂閱的神秘合併複製問題

  • January 13, 2018

我們有一個合併出版物,它在很長一段時間(幾年)內大部分時間都可以正常工作。最近添加了一篇文章,我們被告知快照已過期,因此我們重新生成了它。然後我們在初始化期間收到錯誤消息,並在詳細的錯誤日誌中發現了這個問題:

消息 1934,級別 16,狀態 1,過程 DDLTrigger_Index,第 19 行插入失敗,因為以下 SET 選項的設置不正確:“ANSI_PADDING”。驗證 SET 選項是否適用於索引視圖和/或計算列上的索引和/或查詢通知和/或 xml 數據類型方法。

…快進到現在。在實驗中,我們發現是的,可以在發布者上創建合併發布並在我們的訂閱者伺服器上訂閱,但前提是使用不同的數據庫。通過這個只是為了排除權限/等,並確定問題確實是訂閱者數據庫。

因此,從受影響的數據庫中刪除複製以清除任何隱藏的元數據混亂似乎是合乎邏輯的:

sp_removedbreplication @dbname = 'sickDB' @type = 'all'

到目前為止,一切都很好。但是現在,我得到了完全相同的錯誤,但在此過程中要早得多。具體來說,執行時:

/****** Begin: Script to be run at Subscriber ******/
use [sickDB]
exec sp_addmergepullsubscription 
@publisher = N'publisher',
@publication = N'publication', 
@publisher_db = N'goodDB',
 @subscriber_type = N'Local',
  @subscription_priority = 0,
   @description = N'hope this works', @sync_type = N'Automatic'

(上面略有編輯)。

元數據中是否還有一些剩餘的問題?關於 ANSI_PADDING 東西的原始理論實際上是訂戶數據庫中有一些帶有計算列的表,因此這似乎是相關的。然而,ANSI_PADDING 設置(和Google搜尋)的一些翻轉並沒有真正得出結論性的答案。

非常感謝您的閱讀,並讓我知道我可以提供的任何其他可能有幫助的資訊。

哦,是的,發布者和訂閱者都是 SQL Server 2005。

我認為您應該檢查您的數據庫中是否有一些可以關閉“ANSI_PADDING”的ddl觸發器。如果在觸發器主體中,您會發現類似 SETANSI_NULLS OFF 的內容,這可能是您的錯誤。

如果是 ie 觸發器,它正在監視使用者正在刪除或添加 ie 索引。當您創建請求訂閱並且複制內部試圖在您的訂閱者數據庫上添加複制觸發器時,它可能會起作用。

在這種情況下,您需要禁用觸發器,創建拉訂閱並啟用觸發器。

您可以在此連結上找到更多資訊。這是 ms sql server 2005 中的一個錯誤

http://connect.microsoft.com/SQLServer/feedback/details/334194/ansi-padding-options-in-replication-snapshot

Ĵ

引用自:https://dba.stackexchange.com/questions/50447