Sql-server – Transactional Replication failing between SQL Server 2012 and SQL Server 2016 versions

replicationsql serversql-server-2012sql-server-2016

As per the Microsoft documentation – A Subscriber to a transactional publication can be any version within two versions of the Publisher version. For example:

a SQL Server 2012 (11.x) Publisher can have SQL Server 2014 (12.x) and
SQL Server 2016 (13.x) Subscribers;

and

a SQL Server 2016 (13.x) Publisher can have SQL Server 2014 (12.x) and
SQL Server 2012 (11.x) Subscribers.

But the subscription I am trying to create from

Microsoft SQL Server 2012 (SP3) (KB3072779) – 11.0.6020.0 (X64) to
Microsoft SQL Server 2016 (SP2-CU12) (KB4536648) – 13.0.5698.0 (X64)

is failing and here is the error message I receive –

The selected subscriber does not satisfy the minimum version
compatibility level of the selected publication.

Are these versions not compatible?

Best Answer

The other half of the version requirements is that your distributor be the highest SQL Server version in your Replication topography.

In your case, you are replicating from SQL Server 2012 to SQL Server 2016, which works only if your distributor is also SQL Server 2016.

If you are running your distribution database on your 2012 publisher, configuration will fail when you add the subscriber because a subscriber is at a higher version than the distributor. You would need to either run a dedicated distributor (recommended), or use your 2016 subscriber as the distributor server.

The error message you posted is deceptive because it's not a subscriber/publisher version issue, but rather a subscriber/distributor version issue.