Sintomas
Suponha que tem uma configuração em que o Microsoft SQL Server 2016 atua como Distribuidor e SQL Server 2014 ou SQL Server 2012 está a funcionar como Publisher. Nesta configuração, se criar um instantâneo ou uma publicação transacional ou intercalada no SQL Server 2012 ou SQL Server Publicador de 2014 com a função definida pelo utilizador (UDF) como um artigo, o Agente de Instantâneo falha durante o scripting da UDF e recebe uma mensagem de erro semelhante à seguinte:
Nota
O script falhou para UserDefinedFunction "schema.functionname"
A seguinte mensagem de erro é vista a partir do histórico de tarefas do Agente de Instantâneo:
Nota
<DateTime> [5%] O agente de replicação encontrou uma exceção
<Origem DateTime> : Desconhecida
<Tipo de Exceção DateTime> : Microsoft.SqlServer.Management.Smo.FailedOperationException
<Mensagem de Exceção DateTime> : O script falhou para UserDefinedFunction "schema.functionname"
<Código de Mensagem DateTime> : Não Aplicável
Causa
Este problema ocorre porque o Agente de Instantâneo utiliza o SMO Miscrosft.SqlServer.Smo.dll para artigos de script. O SQL Server 2016 adiciona uma nova propriedade SMO IsNativelyCompiled para In-Memory funções/procedimentos armazenados. Esta propriedade não é apresentada no SQL Server cuja versão é anterior SQL Server 2016. Quando executa o Agente de Instantâneo no Distribuidor para o SQL Server 2016, este utiliza Microsoft.SqlServer.Smo.dll do SQL Server 2016, mas tenta verificar a propriedade SMO IsNativelyCompiled contra SQL Server Publisher de 2012 ou 2014 e falha com o erro acima.
Resolução
Este problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:
Atualização Cumulativa 2 para SQL Server 2016 SP1
Atualização Cumulativa 4 para SQL Server 2016
Acerca das atualizações cumulativas do SQL Server
Cada nova atualização cumulativa para SQL Server contém todas as correções e todas as correções de segurança incluídas na atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Atualização cumulativa mais recente do SQL Server 2016
Solução
Para resolver este problema, crie funções definidas pelo utilizador (UDF) manualmente no Subscritor.
Estado
A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.