KB3197883 CORRECCIÓN: Agente de instantáneas falla al publicar UDF en SQL Server distribuidor 2016 en la replicación transaccional

Se aplica a
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

Síntomas

Supongamos que tiene una configuración en la que Microsoft SQL Server 2016 actúa como distribuidor y SQL Server 2014 o SQL Server 2012 actúa como publicador. En esta configuración, si crea una instantánea, una publicación transaccional o de combinación en SQL Server 2012 o SQL Server 2014 Publisher con función definida por el usuario (UDF) como artículo, se produce un error en el Agente de instantáneas mientras se ejecuta el script de UDF y recibe un mensaje de error similar al siguiente:

Nota

Error de script para UserDefinedFunction 'schema.functionname'

El siguiente mensaje de error se muestra en el historial de trabajos del Agente de instantáneas:

Nota

<Fecha y hora> [5 %] El agente de replicación había encontrado una excepción
<Origen de fecha y hora> : Desconocido
<Tipo de excepción de fecha y hora> : Microsoft.SqlServer.Management.Smo.FailedOperationException
<DateTime> Exception Message: Script failed for UserDefinedFunction 'schema.functionname'
<Código de mensaje DateTime> : No aplicable

Causa

Este problema se produce porque el Agente de instantáneas usa Miscrosft.SqlServer.Smo.dll SMO para escribir artículos. SQL Server 2016 agrega una nueva propiedad SMO, IsNativelyPiled, para In-Memory funciones/procedimientos almacenados. Esta propiedad no se presenta en SQL Server cuya versión sea anterior a SQL Server 2016. Cuando ejecuta el Agente de instantáneas en el distribuidor para SQL Server 2016, utiliza Microsoft.SqlServer.Smo.dll de SQL Server 2016, pero intenta comprobar si la propiedad SMO IsNativelyCompiled coincide con SQL Server Editor de 2012 o 2014 y se produce el error anterior.

Resolución

Este problema se ha corregido en las siguientes actualizaciones acumulativas para SQL Server:

Actualización acumulativa 2 para SQL Server 2016 SP1

Actualización acumulativa 4 para SQL Server 2016

Acerca de las actualizaciones acumulativas para SQL Server

Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Consulte las actualizaciones acumulativas más recientes para SQL Server:

Actualización acumulativa más reciente para SQL Server 2016

Solución alternativa

Para solucionar este problema, cree funciones definidas por el usuario (UDF) manualmente en el suscriptor.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Referencias

Obtenga información sobre la terminología que usa Microsoft para describir las actualizaciones de software.