KB3197883 – ÅTGÄRD: Snapshot Agent misslyckas när du publicerar UDF:er till SQL Server 2016-distributör i transaktionsreplikering

Gäller för
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

Symptom

Anta att du har en konfiguration där Microsoft SQL Server 2016 fungerar som distributör och SQL Server 2014 eller SQL Server 2012 fungerar som utgivare. Om du i den här konfigurationen skapar en ögonblicksbild eller en transaktions- eller kopplingspublikation på SQL Server 2012 eller SQL Server 2014 Publisher med användardefinierad funktion (UDF) som en artikel, misslyckas ögonblicksbildsagenten när du skriptar UDF och du får ett felmeddelande som liknar följande:

Obs

Skriptet misslyckades för UserDefinedFunction schema.functionname

Följande felmeddelande visas i jobbhistoriken för Snapshot Agent:

Obs

<DateTime> [5%] Replikeringsagenten hade påträffat ett undantag
<DateTime> Source: Okänd
<DateTime> Undantagstyp: Microsoft.SqlServer.Management.Smo.FailedOperationException
<DateTime> undantagsmeddelande: Skriptet misslyckades för UserDefinedFunction 'schema.functionname'
<Meddelandekod för datum/tid> : Ej tillämpligt

Orsak

Det här problemet beror på att Snapshot Agent använder SMO Miscrosft.SqlServer.Smo.dll för att skripta artiklar. SQL Server 2016 lägger till en ny SMO-egenskap IsNativelyCompiled för In-Memory funktioner/lagrade procedurer. Den här egenskapen visas inte i SQL Server vars version är tidigare än SQL Server 2016. När du kör Snapshot Agent på Distributor för SQL Server 2016 använder den Microsoft.SqlServer.Smo.dll av SQL Server 2016, men den försöker söka efter SMO-egenskapen IsNativelyCompiled mot SQL Server 2012 eller 2014 Publisher och den misslyckas med ovanstående fel.

Lösning

Det här problemet åtgärdas i följande kumulativa uppdateringar för SQL Server:

Kumulativ uppdatering 2 för SQL Server 2016 SP1

Kumulativ uppdatering 4 för SQL Server 2016

Om kumulativa uppdateringar för SQL Server

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:

Senaste kumulativa uppdateringen för SQL Server 2016

Lösning

Lös problemet genom att skapa användardefinierade funktioner (UDF) manuellt på prenumeranten.

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Referenser

Läs om den terminologi som Microsoft använder för att beskriva programuppdateringar.