FIX: 使用者可以控制合併複寫中補償的變更程序

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:828637
本文已封存。本文係以「現狀」提供且不會再更新。
徵狀
當您使用 [合併式複寫 「 合併代理程式 」 可能會遇到同步處理錯誤,如果插入變更、 更新的變更或刪除變更無法套用在目的地複本包括主索引鍵違規在發行者或訂閱者的各種原因。「 合併代理程式 」 總是會將補償變更傳送至來源複本,以復原失敗的變更。「 合併代理程式 」 執行補償變更程序,以確定資料在一致且 convergent 的狀態,在所有複本中進行維護。不含補償變更資料可能複本之間會有所不同,如果發生這類的主索引鍵違規錯誤。如果資料變化跨複本,非交集的資料就會發生。

這個 Hotfix 之前發生任何方法可以允許使用者控制補償的變更程序。補償的變更程序已由 「 合併代理程式 」 在內部處理。因為這個處理程序已在內部處理,「 合併代理程式 」 所,很難疑難排解特定衝突發生的原因。而且,因為衝突資料列是從刪除,或復原所有複本中,資料列資料會從整個拓樸移除。為協助疑難排解這些問題,Microsoft 已經加入新的發行項層級屬性來合併複寫允許使用者控制補償的變更程序。
解決方案

服務套件資訊

如果要解決這個問題,取得最新的 Service Pack,Microsoft SQL Server 2000。如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
290211如何取得最新的 SQL Server 2000 Service Pack

Hotfix 資訊

此 Hotfix 的英文版具有檔案屬性 (或更新) 中如下表所列。這些檔案的日期和時間為 Coordinated Universal Time (UTC)。當您檢視檔案資訊時,會將它轉換為當地時間。若要到 UTC 與當地時間差異使用 [中日期] 和 [時間] 工具,在 [控制台] 中的 [時區] 索引標籤]。
   Date         Time   Version            Size    File name   ----------------------------------------------------------------------   31-May-2003  18:45  2000.80.818.0      78,400  Console.exe         25-Jun-2003  01:01  2000.80.818.0      33,340  Dbmslpcn.dll        25-Apr-2003  02:12                    786,432  Distmdl.ldf   25-Apr-2003  02:12                  2,359,296  Distmdl.mdf   30-Jan-2003  01:55                        180  Drop_repl_hotfix.sql   26-Aug-2003  20:16  2000.80.854.0     528,960  Dtspump.dll         23-Jun-2003  22:40  2000.80.837.0   1,557,052  Dtsui.dll           23-Jun-2003  22:40  2000.80.837.0     639,552  Dtswiz.dll          24-Apr-2003  02:51                    747,927  Instdist.sql   03-May-2003  01:56                      1,581  Inst_repl_hotfix.sql   08-Feb-2003  06:40  2000.80.765.0      90,692  Msgprox.dll         01-Apr-2003  02:07                      1,873  Odsole.sql   05-Apr-2003  01:46  2000.80.800.0      62,024  Odsole70.dll        07-May-2003  20:41  2000.80.819.0      25,144  Opends60.dll        02-Apr-2003  21:48  2000.80.796.0      57,904  Osql.exe            02-Apr-2003  23:15  2000.80.797.0     279,104  Pfutil80.dll        04-Aug-2003  18:17                    550,780  Procsyst.sql   22-May-2003  22:57                     19,195  Qfe469571.sql   06-Sep-2003  01:36                  1,090,932  Replmerg.sql   06-Sep-2003  07:18  2000.80.858.0     221,768  Replprov.dll        06-Sep-2003  07:18  2000.80.858.0     307,784  Replrec.dll         06-Sep-2003  00:00                  1,087,150  Replsys.sql   13-Aug-2003  16:28                    986,603  Repltran.sql   29-Jul-2003  20:13  2000.80.819.0     492,096  Semobj.dll          31-May-2003  18:27  2000.80.818.0     172,032  Semobj.rll   05-Aug-2003  21:06                    127,884  Sp3_serv_uni.sql   01-Jun-2003  01:01  2000.80.818.0   4,215,360  Sqldmo.dll          07-Apr-2003  17:44                     25,172  Sqldumper.exe       19-Mar-2003  18:20  2000.80.789.0      28,672  Sqlevn70.rll   02-Jul-2003  00:18  2000.80.834.0     180,736  Sqlmap70.dll        03-Sep-2003  02:56  2000.80.857.0     188,992  Sqlmmc.dll          02-Sep-2003  23:03  2000.80.857.0     479,232  Sqlmmc.rll   08-Feb-2003  06:40  2000.80.765.0      57,920  Sqlrepss.dll        06-Sep-2003  07:19  2000.80.858.0   7,598,161  Sqlservr.exe        25-Jul-2003  21:44  2000.80.845.0     590,396  Sqlsort.dll         08-Feb-2003  06:40  2000.80.765.0      45,644  Sqlvdi.dll          25-Jun-2003  01:01  2000.80.818.0      33,340  Ssmslpcn.dll        01-Jun-2003  01:01  2000.80.818.0      82,492  Ssnetlib.dll        01-Jun-2003  01:01  2000.80.818.0      25,148  Ssnmpn70.dll        01-Jun-2003  01:01  2000.80.818.0     158,240  Svrnetcn.dll        31-May-2003  18:59  2000.80.818.0      76,416  Svrnetcn.exe        30-Apr-2003  23:52  2000.80.816.0      45,132  Ums.dll             02-Jul-2003  00:19  2000.80.834.0      98,816  Xpweb70.dll      
附註由於檔案相依性最新版 Hotfix 或包含這些檔案的功能也可能包含其他檔案。
狀況說明
Microsoft 已確認這是本文 < 適用於 > 一節中所列的 Microsoft 產品中的問題。這個問題,首先已經在 Microsoft SQL Server 2000 服務套件 4 中獲得修正。
其他相關資訊
此 Hotfix 會將新的發行項層級 compensate_for_errors 屬性,合併式發行集。您可以設定此屬性,則為 True 或 False。這個屬性的預設值為 true。預設設定表示該合併式複寫會繼續發出補償的變更,因為它有所有先前發行的版本和 Service Pack 中。 當這個屬性設定為 true,並且插入變更,更新的變更或刪除變更無法套用在目的複本 (主索引鍵違規發生在發行者或 「 訂閱者,例如) 的各種原因時,「 合併代理程式 」 會將補償變更傳送至來源複本,來復原變更。

compensate_for_errors 屬性設定為 false 變更無法套用在目的地複本,不發出補償動作,而失敗的變更會保持為衝突,直到資料庫系統管理員可以解決錯誤狀況。「 合併代理程式 」 會嘗試複寫上執行直到錯誤狀況就會解決每個後續同步處理資料列。

下層訂閱代理程式特別提取並沒有安裝,此 Hotfix 的訂戶繼續運作,如同 compensate_for_errors 屬性設定為 true 甚至,如果您有安裝此 Hotfix 發行者上且 compensate_for_errors 屬性設定為 false 發行者上。因此,使用者應升級所有的訂閱者到此 Hotfix 如果他們想要使用新的 compensate_for_errors 屬性所提供的功能。此升級有助於確保一致的行為整個拓樸。

Microsoft SQL Server 2000 Windows CE 版的 「 訂閱者 」,下載衝突的行為與所有先前的 SQL Server 相同釋放無論 compensate_for_errors 屬性的設定值。不過,compensate_for_errors 屬性設定會決定當是否補償變更時,就會產生期間的錯誤和 SQL Server CE 的訂閱者到 SQL Server 發行者的衝突上載 (發行者和執行 Microsoft 網際網路資訊服務 (IIS) 的電腦已經升級為此 Hotfix)。

這個屬性公開 sp_addmergearticle 預存程序和 sp_changemergearticle 預存程序中為新參數,具名 @ compensate_for_errors。這個屬性未公開 SQL Server 企業管理員] 中。 可以針對現有的發行項不需要被重新初始化變更這個屬性。 這個屬性的一般的用法是:
exec sp_addmergearticle @publication = N'mypubl1', @article = N'authors', @source_owner = N'dbo', @source_object = N'authors', @compensate_for_errors='false'orexec sp_changemergearticle  @publication='mypubl1',@article='authors', @property='compensate_for_errors',@value='false'

加入項目至 SQL Server 2000 線上叢書 》 中 sp_addmergearticle 」 主題

sp_addmergearticle [@compensate_for_errors = ]		  'compensate_for_errors'
compensate_for_errors 屬性控制當同步處理期間發生錯誤時,是否會採取補償動作。@ compensate_for_errors 參數定義為 nvarchar(5),而且的預設設定值為 True。預設情況下,無法永遠同步處理期間套用在訂閱者或發行者的變更通往補償動作以回復變更。不過,一個設定不正確的訂閱者,會產生錯誤,可能會造成以不正確地反轉其他訂閱者以及發行者的變更。將 compensate_for_errors 屬性設定為 false 停用這些補償動作。

附註compensate_for_errors 屬性設定為 False 會導致非交集。

加入 sp_changemergearticle 」 主題 SQL Server 線上叢書 》 中的項目

sp_changemergearticle [ @publication = ] 'publication' , [ @article = ] 'article' [ , [		  @property = ] 'property' ] [ , [ @value =] 'value' ]
屬性描述
compensate_for_errors則為 True同步處理期間發生錯誤時,會執行補償動作。 這是預設行為。
compensate_for_errors則為 False不執行補償動作

附註compensate_for_errors 屬性設定為 False 會導致非交集。

下面的選取陳述式決定是否要在為 true 或 false,設定 compensate_for_errors 屬性:
select CASE compensate_for_errors WHEN 0 THEN ‘FALSE’ ELSE ‘TRUE’ END from sysmergearticles where name = ‘NameOfTheArticle’
compensate_for_errors 屬性是針對特定的發行項的共用的屬性,因為其值應該一致如果發行項屬於多個發行集 (例如重新發行者的案例和替代同步夥伴)。這種情況會強制執行大部分的時候。不過,是使用者的責任,以確定 compensate_for_errors 屬性共用文件的所有出版物中有特定的發行項相同的值。再次,這可跨拓樸確保一致的行為。

附註如果必須還原此 Hotfix 已套用到 SQL Server 執行個體之前已備份的複製資料庫的備份可以以對抗在複寫中使用還原的資料庫的 SQL Server 執行個體所需的參數執行 sp_vupgrade_replication 預存程序。

如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
824684用來描述 Microsoft 軟體更新標準術語的說明

警告:本文為自動翻譯

內容

文章識別碼:828637 - 最後檢閱時間:02/27/2014 02:16:53 - 修訂: 5.3

Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2000 Desktop Engine (Windows), Microsoft SQL Server 2000 Enterprise Edition 64-bit

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB828637 KbMtzh
意見反應