KB3197883 - FIX: Snapshot-agent mislukt wanneer u UDF's publiceert naar SQL Server 2016-distributeur in transactionele replicatie

Van toepassing op
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1

Symptomen

Stel dat u een installatie hebt waarbij Microsoft SQL Server 2016 optreedt als distributeur en SQL Server 2014 of SQL Server 2012 als uitgever. Als u in deze configuratie een momentopname, of een transactionele of samenvoegingspublicatie maakt in SQL Server 2012 of SQL Server 2014 Publisher met een door de gebruiker gedefinieerde functie (UDF) als artikel, mislukt Snapshot-agent tijdens het uitvoeren van scripts voor UDF en wordt een foutbericht van de volgende strekking weergegeven:

Opmerking

Script is mislukt voor UserDefinedFunction 'schema.functionname'

Het volgende foutbericht wordt weergegeven in de taakgeschiedenis van Snapshot Agent:

Opmerking

<DateTime> [5%] Er is een uitzondering opgetreden in de replicatieagent
<DateTime-bron> : Onbekend
<DateTime-uitzonderingstype> : Microsoft.SqlServer.Management.Smo.FailedOperationException
<DateTime-uitzonderingsbericht> : script voor UserDefinedFunction 'schema.functionname' is mislukt
<DateTime-berichtcode> : niet van toepassing

Oorzaak

Dit probleem treedt op omdat de Snapshot-agent SMO-Miscrosft.SqlServer.Smo.dll gebruikt om artikelen te scripten. SQL Server 2016 voegt een nieuwe SMO-eigenschap, IsNativelyCompilated, toe voor In-Memory functies/opgeslagen procedures. Deze eigenschap wordt niet weergegeven in SQL Server waarvan de versie eerder is dan SQL Server 2016. Wanneer u de Snapshot Agent uitvoert op Distributor voor SQL Server 2016, gebruikt deze Microsoft.SqlServer.Smo.dll van SQL Server 2016, maar deze probeert te controleren op SMO-eigenschap IsNativeCompiled tegen SQL Server 2012 of 2014 Publisher en mislukt met de bovenstaande fout.

Oplossing

Dit probleem is opgelost in de volgende cumulatieve updates voor SQL Server:

Cumulatieve update 2 voor SQL Server 2016 SP1

Cumulatieve update 4 voor SQL Server 2016

Informatie over cumulatieve updates voor SQL Server

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingspatches die deel uitmaakten van de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:

Meest recente cumulatieve update voor SQL Server 2016

Tijdelijke oplossing

U kunt dit probleem omzeilen door door de gebruiker gedefinieerde functies handmatig op de abonnee te maken.

Status

Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Meer informatie

Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.