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

文章翻譯 文章翻譯
文章編號: 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'
or
exec 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 - 上次校閱: 2014年2月27日 - 版次: 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
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:828637
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com