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.