FIX: 新增或卸除發行項的資料行後,散發代理程式都可能會失敗

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

按一下這裡查看此文章的英文版本:837231
本文已封存。本文係以「現狀」提供且不會再更新。
Bug #: 471158 (SQL Server 8.0)
Microsoft SQL Server 2000 的修正程式的發送是一個可下載的檔案。由於此修正程式是累積,每個新版本包含所有 Hotfix,隨附先前的 SQL Server 2000 所有安全性修正程式都修正發行。
徵狀
當您新增資料行到發行的發行項,或從發行的發行項卸除資料行並發行項參與交易式複寫時,相對應的 「 散發代理程式 」 可能無法順利執行。可能會收到類似下列的錯誤訊息:
字元字串 'Column Name' 之前的未封閉的引號。
當下列情況成立時,可能就會發生這個問題:
  • 發行項被設定為複寫到相對應的 「 訂閱者 」 的 INSERT 命令]、 [更新] 命令] 或 [DELETE 命令使用 SQL 命令。
  • 變更例如插入]、 [更新,] 或 [在 「 發行者 」 發行項中所做的刪除還不會在 「 訂閱者 」 套用。
解決方案

服務套件資訊

如果要解決這個問題,取得最新的 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    28-Oct-2003  04:21  2000.80.873.0    315,968  Custtask.dll    30-Jan-2004  16:29  2000.80.911.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    12-Sep-2003  03:26  2000.80.859.0  1,905,216  Dtspkg.dll    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    30-Jan-2004  16:29  2000.80.911.0     90,692  Msgprox.dll    01-Apr-2003  02:07                     1,873  Odsole.sql    30-Jan-2004  16:29  2000.80.911.0     62,024  Odsole70.dll    30-Jan-2004  16:29  2000.80.911.0     25,144  Opends60.dll    30-Jan-2004  16:28  2000.80.911.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    12-Sep-2003  00:37                    12,305  Qfe469315.sql    22-May-2003  22:57                    19,195  Qfe469571.sql    30-Jan-2004  01:16                 1,090,380  Replmerg.sql    30-Jan-2004  16:29  2000.80.911.0    221,768  Replprov.dll    30-Jan-2004  16:29  2000.80.911.0    307,784  Replrec.dll    29-Jan-2004  23:24  2000.80.911.0    159,813  Replres.rll    06-Sep-2003  00:00                 1,087,150  Replsys.sql    13-Aug-2003  16:28                   986,603  Repltran.sql    30-Jan-2004  16:29  2000.80.911.0    287,304  Rinitcom.dll    30-Jan-2004  16:29  2000.80.911.0     57,916  Semnt.dll    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    02-Jan-2004  19:42  2000.80.904.0     53,832  Snapshot.exe    09-Dec-2003  20:07                   117,834  Sp3_serv_uni.sql    05-Feb-2004  00:46  2000.80.913.0     28,672  Sqlagent.dll    05-Feb-2004  00:47  2000.80.913.0    311,872  Sqlagent.exe    19-Feb-2004  18:02  2000.80.916.0    168,001  Sqlakw32.dll    30-Jan-2004  16:29  2000.80.911.0  4,215,360  Sqldmo.dll    07-Apr-2003  17:44                    25,172  Sqldumper.exe    29-Jan-2004  23:17  2000.80.911.0     28,672  Sqlevn70.rll    05-Mar-2004  17:13  2000.80.922.0    180,792  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    22-Oct-2003  00:08  2000.80.871.0    401,984  Sqlqry.dll    30-Jan-2004  16:29  2000.80.911.0     57,920  Sqlrepss.dll    09-Mar-2004  19:54  2000.80.922.0  7,614,545  Sqlservr.exe    30-Jan-2004  16:29  2000.80.911.0    590,396  Sqlsort.dll    30-Jan-2004  16:29  2000.80.911.0     45,644  Sqlvdi.dll    30-Jan-2004  16:29  2000.80.911.0    106,588  Sqsrvres.dll   30-Jan-2004  16:29  2000.80.911.0     33,340  Ssmslpcn.dll   30-Jan-2004  16:29  2000.80.911.0     82,492  Ssnetlib.dll    30-Jan-2004  16:29  2000.80.911.0     25,148  Ssnmpn70.dll    28-Oct-2003  04:21  2000.80.873.0    123,456  Stardds.dll    30-Jan-2004  16:29  2000.80.911.0    158,240  Svrnetcn.dll    30-Jan-2004  16:29  2000.80.911.0     76,416  Svrnetcn.exe    30-Apr-2003  23:52  2000.80.816.0     45,132  Ums.dll    30-Jan-2004  16:29  2000.80.911.0     98,872  Xpweb70.dll
附註由於檔案相依性最新版 Hotfix 或包含這些檔案的功能也可能包含其他檔案。
其他可行方案
若要解決這個問題,您必須設定發行項使用預存程序來複寫到相對應的 「 訂閱者 」 的 INSERT 命令]、 [更新] 命令] 或 [DELETE 命令。如果要執行此動作請依照下列在 「 發行者 」 步驟執行:
  1. 執行下列程式碼,以卸除所有訂閱您的文章:
    USE Publication DatabaseGOEXEC sp_dropsubscription 	@publication=N'Publication Name', 	@subscriber = N'all', 	@article = N'Article Name', 	@destination_db = N'all'GO
  2. 執行下列程式碼,以從您目前的交易式發行集卸除發行項:
    USE Publication DatabaseGOEXEC sp_droparticle 	@publication = N'Publication Name', 	@article = 'Article Name',	@force_invalidate_snapshot = 1GO
  3. 新增您的文章您目前的交易式發行集,讓發行項會使用預存程序才能複寫到相對應的 「 訂閱者 」 的 INSERT 命令]、 [更新] 命令] 或 [DELETE 命令。To do this, run the following code:
    USE Publication DatabaseGOEXEC sp_addarticle 	@publication = N'Publication Name', 	@article = N'Article Name', 	@source_owner = N'dbo', 	@source_object = N'Source Table Name', 	@destination_table = N'Destination Table Name', 	@type = N'logbased', 	@creation_script = null, 	@description = null, 	@pre_creation_cmd = N'drop', 	@schema_option = 0x00000000000000F3, 	@status = 16, 	@vertical_partition = N'false', 	@ins_cmd = N'sp_MSins_Article Name', 	@del_cmd = N'sp_MSdel_Article Name', 	@upd_cmd = N'sp_MSupd_Article Name', 	@filter = null, 	@sync_object = null, 	@auto_identity_range = N'false'GO
    Note Make sure that you modify the following parameters before you run the Transact-SQL statements:
    • @ 出版物: 在目前出版物的名稱
    • @ 文章: 新的發行項名稱
    • @ source_object: 新的發行項所表示的基礎資料表的名稱
    • @ destination_table: 在 「 訂閱者 」 中建立目的資料表的名稱
    • @ ins_cmd: CALL sp_MSins_ Article Name
    • @ del_cmd: CALL sp_MSdel_ Article Name
    • @ upd_cmd: MCALL sp_MSupd_ Article Name
    • @ force_invalidate_snapshot: 1 如果發行集已經產生快照集
    此外,如果您的文章包含識別資料行,且想讓 SQL Server 管理識別範圍處理,您必須設定參數 @ auto_identity_rangetrue
  4. 新增發行項新增至您的交易式發行集訂閱:
    • 針對您目前的交易式發行集訂閱每個發送訂閱,執行類似於下列 SQL 查詢分析器,在 「 發行者 」 中,發行集資料庫上的 Transact-SQL 陳述式:
      USE Publication DatabaseGOEXEC sp_addsubscription 	@publication = N'Publication Name', 	@article = N'Article Name', 	@subscriber = N'Subscriber Name', 	@destination_db = N'Destination Database', 	@sync_type = N'automatic', 	@update_mode = N'read only', 	@offloadagent = 0, 	@dts_package_location = N'distributor'GO
      附註 請確定,才能執行 Transact-SQL 陳述式,修改下列參數:
      • @ 出版物: 在目前出版物的名稱
      • @ 文章: 新的發行項名稱
      • 訂閱者 @: 「 訂閱者 」 的名稱
      • @ destination_db: 包含訂閱的目的地資料庫名稱
      此外,請確定參數可能會變更現有訂閱的屬性不會被修改。
    • 若要將訂閱加入至您的文章中所有現有的訂閱者交易式發行集的提取訂閱,執行類似於下列 SQL 查詢分析器,在 「 發行者 」 中,發行集資料庫上的 Transact-SQL 陳述式:
      USE Publication DatabaseGOEXEC sp_refreshsubscriptions 	@publication = N'Publication Name'GO
  5. 執行對應的 「 快照集代理程式 」 在散發者目前的交易式發行集。
  6. 執行對應的 「 散發代理程式 」 每個訂閱到目前的交易式發行集的訂閱。
狀況說明
Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

這個問題,首先已經在 Microsoft SQL Server 2000 服務套件 4 中獲得修正。
参考
如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
824684用來描述 Microsoft 軟體更新標準術語的說明

警告:本文為自動翻譯

內容

文章識別碼:837231 - 最後檢閱時間:01/17/2015 07:03:32 - 修訂: 2.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 KB837231 KbMtzh
意見反應
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)