Microsoft KB Archive/240688

= PRB: Replication Subscribers Unable to Synchronize with Pull Subscription =

Article ID: 240688

Article Last Modified on 8/27/2002

-

APPLIES TO


 * Microsoft SQL Server 7.0 Standard Edition

-



This article was previously published under Q240688



SYMPTOMS
Initial replication synchronization does not occur if both of the following conditions are true:
 * The subscribers have a pull subscription.

-and-
 * The named or anonymous subscribers do not have administrative privileges on the distribution server.

Also note the following will occur:  If you are replicating to a Jet 4.0 database under the preceding conditions, the initial synchronization does not occur and a blank Jet 4.0 database will be created. If you are performing transactional replication through either SQL Server Enterprise Manager or through stored procedures, the distribution agent may fail with the following error:

The process could not read file '\\ \d$\MSSQL7\ReplData\unc\ _pubs_KBBBB\19990827151558\KB.sch' due to OS error 5. The step failed.

 If you have a Microsoft Visual Basic application and are accomplishing replication through the SQL Merge ActiveX control, the Visual Basic application shows the message:

No data needed to be merged.





CAUSE
This is a problem with the permissions on the replication snapshot folder on the distribution server. The anonymous subscriber needs Read access to the Repldata folder, which by default on a Distributor server running Microsoft Windows NT is the $ share and a path of \\ \ $\Mssql7\Repldata (for example, \\Machinename\D$\Mssql7\Repldata). This is an administrative share, and only accounts with Administrator privileges can access this folder.



WORKAROUND
To work around this problem, change the administrative share to a public share and run the snapshot agent again. This is recommended because it is not practical to give administrative privileges to anonymous subscribers so that they can access the administrative share.

To accomplish this, perform the following steps:
 * 1) In Windows NT Explorer, locate the MSSQL7\Repldata folder.
 * 2) Share this folder, apply Read permission to Everyone and Full Control permission to the account(s) under which the Distributor's SQL Server and SQL Server Agent services run.
 * 3) In SQL Server Enterprise Manager on the distribution server, go to the Tools menu, point to Replication, and click Configure Publishing, Subscribers, and Distribution.
 * 4) On the Publishers tab, click the Properties button (...) for the publishing server.
 * 5) In the   Properties dialog box, locate the Snapshot Folder line.
 * 6) Change the administrative path to the public share path. For example, you would change the path \\ \D$\MSSQL7\Repldata to \\ \Repldata.
 * 7) Click OK until you have closed all dialog boxes.
 * 8) Expand Replication Monitor, then expand Agents and click Snapshot Agents.
 * 9) Run the snapshot agent for the publication by right-clicking it and then clicking Start on the shortcut menu.

After the snapshot agent generates the snapshot, you can then run the Visual Basic application with ActiveX merge control from the anonymous subscriber. You can also verify that the Jet 4.0 database contains the replicated tables instead of a blank database. To see the contents of a Jet 4.0 database, either open it in Microsoft Access 2000 or create a linked server to the database, using the OLE DB Provider for Jet 4.0. You will not be able to open the Jet 4.0 database in Microsoft Access 97.