2011-12-12 70 views
0

在我的軟件我有它運行,我需要應用修補我們的最新版本的數據庫更新的過程。在我的最新腳本中,我想將列添加到具有複製設置發佈的表中。當我創建我的知己腳本添加列,我得到一個消息,說以下內容:交易問題將列複製的表

You can only specify the READPAST lock in the READ COMMITTED or REPEATABLE READ isolation levels. 

任何想法,以獲得最簡單的辦法解決這問題?我必須腳本刪除出版物,然後重新添加它!

+0

你是如何創建你的腳本,它看起來像什麼? – Pondlife

回答

2

我們同時使用SQL生成的腳本本週有這個問題比較進行同步我們的生產和開發環境。這個問題是由SQL Compare的腳本(或者你正在使用的)以比READ COMMITTED或REPEATABLE READ更高的隔離級別開始事務引起的。

當你運行該腳本帽子的一部分具有ALTER TABLE來添加列,發起到propogates ALTER TABLE命令到用戶的SQL複製代碼的調用。該代碼無法在具有較高隔離級別的較大事務內部執行。

我們使用的解決方案是編寫腳本複製。刪除該表上的複製。應用同步腳本。然後重新創建複製。

另一種方法是編輯的同步腳本來更改事務的隔離級別,或乾脆刪除它。這不是我們想要做的,所以我們採用了前面提到的解決方案。

1

要將新列添加到表中並將其包含在現有發佈中,您需要在發佈者處使用ALTER TABLE <表> ADD < Column>語法。默認情況下,架構更改將傳播給訂閱者,發佈屬性@replicate_ddl必須設置爲true。

更多信息請參見Making Schema Changes on Publication Databases