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 "coming into partition" 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 "More Information" section for an example of the problem in detail.
RESOLUTION
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 "Applies to" 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.
- 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.
Keywords: kbbug kbfix kbqfe kbsqlserv2000presp4fix kbhotfixserver KB867879