FIX: Dynamic Filtered Tables Do Not Replicate Data From Joined Tables to SQL Server CE Subscribers (293761)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q293761
BUG #: 351242 (SHILOH)

SYMPTOMS

When two tables are published that meet the following conditions:
  • Table1 has a dynamic subset filter.
  • Table2 is joined to Table1 using a join filter.
Updates to the filtered table do not cause the corresponding records in the other table to be replicated to the Microsoft SQL Server CE subscribers. This problem does not occur with SQL Server subscribers.

RESOLUTION

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

290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack

Hotfix

The English version of this fix should have the following file attributes or later:
   File name   
   ------------
   s80252i.exe
				

STATUS

Microsoft has confirmed this to be a problem in SQL Server 2000. This problem was first corrected in SQL Server 2000 Service Pack 1.

MORE INFORMATION

An example follows that shows the result you want to obtain.

For this example, assume that you are working with two tables, table1 and table2.
  • The first table, table1, has a dynamic filter on the MyFilterCol column and contains the following data:
    MyNum  MyFilterCol
    ------------------
    
    1      Test1
    2      Test2
    					
  • The second table, table2, has this data:
    MyNum  MyString
    ---------------
    
    1      One
    2      Two
    						
    and is joined by the following JOIN filter clause:
    SELECT <published_columns> FROM [dbo].[Table1] INNER JOIN 
    [dbo].[Table2] ON table1.MyNum = table2.MyNum
    					
Subscribe through SQL Server CE, and pass Hostname = "Test1". The initial synchronization shows that the two tables have the proper data.

Now, run this update statement:
UPDATE Table1 SET MyFilterCol = 'Test1' WHERE MyNum = "2"
				
When you run the Merge agent, you expect this result:
MyNum		MyString						
------------------------

1		one						
2		two
				
However, the result looks like this instead:
MyNum		MyString			
------------------------
				
1		one
				
The second row should be replicated to the subscriber.

Modification Type:MajorLast Reviewed:11/5/2003
Keywords:kbBug kbfix kbQFE kbSQLServ2000sp1fix KB293761