PRB: Replication Subscribers Unable to Synchronize with Pull Subscription (240688)



The information in this article applies to:

  • Microsoft SQL Server 7.0

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 '\\Computername\d$\MSSQL7\ReplData\unc\name_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 drive$ share and a path of \\computer\drive$\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 Server_name 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 \\Computername\D$\MSSQL7\Repldata to \\Computername\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.

REFERENCES

SQL Server Books Online; topic: "How to Enable a Publication for the Internet (Enterprise Manager)"; "Enabling a Distributor for Publishers"

For more information on creating a linked server see: SQL Server Books Online; topic: "sp_addlinkedserver"; "sp_addlinkedsrvlogin"

Modification Type:MajorLast Reviewed:8/27/2002
Keywords:kbprb KB240688