FIX: Merge agent fails when you apply snapshot in SQL Server 2012 or SQL Server 2014 instance if cross database dependencies are present

Applies to: SQL Server 2012 DeveloperSQL Server 2012 EnterpriseSQL Server 2012 Standard More

Symptoms


Assume that you use Microsoft SQL Server 2012 or SQL Server 2014 Merge Replication. There is a cross database dependency present in any of the published database objects, with same schema name and object name. In this scenario, you receive the following errors:
The schema script '<FileName>.sch' could not be propagated to the subscriber.
The process could not read file "<pathname>\<FileName>.sch'' due to OS error 2.

Cause


The issue occurs because SQL Server Snapshot Agent sometimes returns wrong database for certain dependencies if there is a cross database dependency present in any of the published database objects.

Resolution


After you apply the fix, SQL Server will adjust its behavior to ignore any non-article dependency if the database is set to anything other than the current publisher database.

The issue was first fixed in the following cumulative update of SQL Server.

Cumulative Update 1 for SQL Server 2014

Cumulative Update 9 for SQL Server 2012 SP1

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.