Microsoft KB Archive/867879

= FIX: Merge replication non-convergence occurs with SQL Server CE subscribers =

Article ID: 867879

Article Last Modified on 11/2/2007

-

APPLIES TO


 * 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 Enterprise Edition
 * Microsoft SQL Server 2000 Workgroup Edition
 * Microsoft SQL Server 2000 Desktop Engine (Windows)
 * Microsoft SQL Server 2000 Developer Edition
 * Microsoft SQL Server 2000 Enterprise Edition 64-bit

-



Bug #: 471602 (SHILOH_BUGS)



Microsoft distributes Microsoft SQL Server 2000 fixes as one downloadable file. Because the fixes are cumulative, each new release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2000 fix release.



SYMPTOMS
When two tables are published that meet the following conditions, the corresponding child table rows that are associated with the &quot;coming into partition&quot; parent changes are not replicated to the Microsoft SQL Server CE subscribers:
 * The parent table has a dynamic subset filter.
 * The child table is joined to the parent table by using a join filter.
 * The subscribers to the articles are SQL Server CE subscribers.
 * Updates on the parent table and the child table cause the row to go out of partition, followed by other updates to the parent table that cause the row to come back into partition.

This problem does not occur with SQL Server subscribers. See the &quot;More Information&quot; section for an example of the problem in detail.



Service pack information
To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2000. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

290211 How to obtain the latest SQL Server 2000 service pack

Hotfix information
The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.   Date         Time   Version        Size     File name --  19-Jun-2004  00:51  2000.80.952.0    664,128  Autoplt.dll 19-Jun-2004 00:51  2000.80.952.0     78,400  Console.exe 19-Jun-2004 00:51  2000.80.952.0    315,968  Custtask.dll 19-Jun-2004 00:51  2000.80.952.0     33,340  Dbmslpcn.dll 08-Apr-2004 21:42                   786,432  Distmdl.ldf 08-Apr-2004 21:42                 2,359,296  Distmdl.mdf 10-Oct-2003 18:48                       180  Drop_repl_hotfix.sql 19-Jun-2004 00:51  2000.80.952.0  1,905,216  Dtspkg.dll 19-Jun-2004 00:52  2000.80.952.0    528,960  Dtspump.dll 19-Jun-2004 00:52  2000.80.952.0  1,557,052  Dtsui.dll 19-Jun-2004 00:52  2000.80.952.0    639,552  Dtswiz.dll 10-Oct-2003 18:48                   747,927  Instdist.sql 10-Oct-2003 18:48                     1,581  Inst_repl_hotfix.sql 19-Jun-2004 00:51  2000.80.952.0    352,828  Isqlw.exe 19-Jun-2004 00:51  2000.80.952.0     82,492  Itwiz.exe 19-Jun-2004 00:52  2000.80.952.0     90,692  Msgprox.dll 19-May-2004 23:43  8.11.40209.0     209,408  Mssdi98.dll 19-Jun-2004 00:52  2000.80.952.0     62,024  Odsole70.dll 19-Jun-2004 00:52  2000.80.952.0     25,144  Opends60.dll 19-Jun-2004 00:51  2000.80.952.0     57,904  Osql.exe 19-Jun-2004 00:52  2000.80.952.0    279,104  Pfutil80.dll 10-Oct-2003 18:37                   550,780  Procsyst.sql 08-Apr-2004 21:42                    12,305  Qfe469315.sql 08-Apr-2004 21:42                    19,195  Qfe469571.sql 15-Jun-2004 18:11                 1,105,167  Replmerg.sql 19-Jun-2004 00:52  2000.80.952.0    221,768  Replprov.dll 19-Jun-2004 00:52  2000.80.952.0    307,784  Replrec.dll 15-Jun-2004 15:43  2000.80.952.0    159,813  Replres.rll 10-Oct-2003 18:48                 1,087,150  Replsys.sql 10-Oct-2003 18:48                   986,603  Repltran.sql 19-Jun-2004 00:52  2000.80.952.0    287,304  Rinitcom.dll 19-Jun-2004 00:52  2000.80.952.0     78,416  Sdiclnt.dll 19-Jun-2004 00:52  2000.80.952.0     66,112  Semmap.dll 19-Jun-2004 00:52  2000.80.952.0     57,916  Semnt.dll 19-Jun-2004 00:52  2000.80.952.0    492,096  Semobj.dll 15-Jun-2004 16:18  2000.80.952.0    172,032  Semobj.rll 19-Jun-2004 00:51  2000.80.952.0     53,832  Snapshot.exe 12-Mar-2004 03:10                   117,834  Sp3_serv_uni.sql 19-Jun-2004 00:51  2000.80.952.0     28,672  Sqlagent.dll 19-Jun-2004 00:51  2000.80.952.0    311,872  Sqlagent.exe 19-Jun-2004 00:51  2000.80.952.0    168,001  Sqlakw32.dll 19-Jun-2004 00:52  2000.80.952.0     33,344  Sqlctr80.dll 19-Jun-2004 00:52  2000.80.952.0  4,215,360  Sqldmo.dll 19-Jun-2004 00:51                    25,172  Sqldumper.exe 15-Jun-2004 15:26  2000.80.952.0     28,672  Sqlevn70.rll 19-Jun-2004 00:52  2000.80.952.0    180,792  Sqlmap70.dll 19-Jun-2004 00:52  2000.80.952.0    188,992  Sqlmmc.dll 15-Jun-2004 16:25  2000.80.952.0    479,232  Sqlmmc.rll 19-Jun-2004 00:52  2000.80.952.0    401,984  Sqlqry.dll 19-Jun-2004 00:52  2000.80.952.0     57,920  Sqlrepss.dll 19-Jun-2004 00:52  2000.80.952.0  7,581,777  Sqlservr.exe 19-Jun-2004 00:52  2000.80.952.0    590,396  Sqlsort.dll 19-Jun-2004 00:52  2000.80.952.0     45,644  Sqlvdi.dll 19-Jun-2004 00:52  2000.80.952.0    106,588  Sqsrvres.dll 19-Jun-2004 00:52  2000.80.952.0     33,340  Ssmslpcn.dll 19-Jun-2004 00:52  2000.80.952.0     82,492  Ssnetlib.dll 19-Jun-2004 00:52  2000.80.952.0     25,148  Ssnmpn70.dll 19-Jun-2004 00:52  2000.80.952.0    123,456  Stardds.dll 19-Jun-2004 00:52  2000.80.952.0    158,240  Svrnetcn.dll 19-Jun-2004 00:51  2000.80.952.0     76,416  Svrnetcn.exe 19-Jun-2004 00:52  2000.80.952.0     53,808  Ums.dll 19-Jun-2004 00:52  2000.80.952.0     98,872  Xpweb70.dll Note Because of file dependencies, the most recent hotfix or feature that contains these files may also contain additional files.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the &quot;Applies to&quot; section. This problem was first corrected in Microsoft SQL Server 2000 Service Pack 4.



MORE INFORMATION
For more information, click the following article number to view the article in the Microsoft Knowledge Base:

824684 Description of the standard terminology that is used to describe Microsoft software updates

Steps to reproduce the problem
  In SQL Server, Run the following code to set up the database, the tables, and merge replication: create database cesimplerepro GO use cesimplerepro GO create table main (mainid int not null primary key, id_user int) GO create table child (childid int not null primary key, id_user int, mainid int foreign key references main(mainid)) GO insert into main (mainid, id_user) values (3, 5) GO insert into child (childid, id_user, mainid) values (1, 10, 3) GO exec sp_replicationdboption @dbname = N'cesimplerepro', @optname = N'merge publish', @value = N'true' GO -- Add the merge publication. exec sp_addmergepublication @publication = N'cesimplerepro', @retention = 14, @sync_mode = N'character', @allow_push = N'true', @allow_pull = N'true', @allow_anonymous = N'true', @enabled_for_internet = N'false', @centralized_conflicts = N'true', @dynamic_filters = N'true', @snapshot_in_defaultfolder = N'true', @compress_snapshot = N'false', @ftp_port = 21, @ftp_login = N'anonymous', @conflict_retention = 14, @keep_partition_changes = N'true', @allow_subscription_copy = N'false', @allow_synctoalternate = N'false',@add_to_active_directory = N'false', @max_concurrent_merge = 0, @max_concurrent_dynamic_snapshots = 0 GO exec sp_addpublication_snapshot @publication = N'cesimplerepro',@frequency_type = 4, @frequency_interval = 1, @frequency_relative_interval = 1, @frequency_recurrence_factor = 0, @frequency_subday = 1, @frequency_subday_interval = 5, @active_start_date = 0, @active_end_date = 0, @active_start_time_of_day = 500, @active_end_time_of_day = 235959 GO exec sp_grant_publication_access @publication = N'cesimplerepro', @login = N'BUILTIN\Administrators' GO exec sp_grant_publication_access @publication = N'cesimplerepro', @login = N'distributor_admin' GO exec sp_grant_publication_access @publication = N'cesimplerepro', @login = N'sa' GO -- Add the merge articles. exec sp_addmergearticle @publication = N'cesimplerepro', @article = N'main', @source_owner = N'dbo', @source_object = N'main', @type = N'table', @description = null, @column_tracking = N'true', @pre_creation_cmd = N'drop', @creation_script = null, @schema_option = 0x000000000000CFF1, @article_resolver = null, @subset_filterclause = N'ID_User = 5', @vertical_partition = N'false', @destination_owner = N'dbo', @auto_identity_range = N'false', @verify_resolver_signature = 0, @allow_interactive_resolver = N'false', @fast_multicol_updateproc = N'true', @check_permissions = 0 GO exec sp_addmergearticle @publication = N'cesimplerepro', @article = N'child', @source_owner = N'dbo', @source_object = N'child', @type = N'table', @description = null, @column_tracking = N'true', @pre_creation_cmd = N'drop', @creation_script = null, @schema_option = 0x000000000000CFF1, @article_resolver = null, @subset_filterclause = null, @vertical_partition = N'false', @destination_owner = N'dbo', @auto_identity_range = N'false', @verify_resolver_signature = 0, @allow_interactive_resolver = N'false', @fast_multicol_updateproc = N'true', @check_permissions = 0 GO -- Add the article subset filter. exec sp_addmergefilter @publication = N'cesimplerepro', @article = N'Child', @filtername = N'child_main', @join_articlename = N'main', @join_filterclause = N'main.mainid = Child.mainid', @join_unique_key = 0 GO  Run the Snapshot Agent, and then download the snapshot to a SQL Server CE Subscriber.  Run the following queries at the Subscriber: update main set id_user = 0 -- Take this row out of the partition. update child set id_user = 10 -- This is a dummy update on the child table.  Synchronize the changes to the publisher. Notice that the SQL Server CE Subscriber has no rows for the main table and the child table because the filter is no longer satisfied.  Run the following query in Publisher: Update main set id_user = 5 -- Satisfies the filter clause again. The row will get into partition on the next synch. </li> Synchronize the changes to the SQL Server CE subscriber.

On the Subscriber, you will see one row for the main table. This behavior is correct. But you do not see any rows for the child table. This is incorrect.</li></ol>

Keywords: kbbug kbfix kbqfe kbsqlserv2000presp4fix kbhotfixserver KB867879

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.