KB3197883 - CORREÇÃO: O Agente de Instantâneo falha ao publicar UDF no Distribuidor do SQL Server 2016 na Replicação Transacional

Aplica-se 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

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.