KB3197883 - CORREÇÃO: Snapshot Agent falha quando você publica UDFs para SQL Server distribuidor 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 na qual o Microsoft SQL Server 2016 atua como Distribuidor e o SQL Server 2014 ou SQL Server 2012 atua como Publicador. Nesta configuração, se criar um instantâneo ou uma publicação transacional ou de intercalação no SQL Server 2012 ou no SQL Server 2014 Publisher com função definida pelo utilizador (UDF) como artigo, o Snapshot Agent falha durante o scripting UDF e recebe uma mensagem de erro semelhante à seguinte:

Nota

Script failed for UserDefinedFunction 'schema.functionname'

A seguinte mensagem de erro é exibida no histórico de trabalho do Snapshot Agent:

Nota

<DateTime> [5%] O agente de replicação tinha encontrado uma exceção
<DateTime> Source: Desconhecido
<Tipo de exceção DateTime> : Microsoft.SqlServer.Management.Smo.FailedOperationException
<Mensagem de exceção DateTime> : Falha no script para UserDefinedFunction 'schema.functionname'
<Código de Mensagem DateTime> : Não Aplicável

Causa

Esse problema ocorre porque o Snapshot Agent usa Miscrosft.SqlServer.Smo.dll SMO para escrever artigos de script. O SQL Server 2016 adiciona uma nova propriedade SMO IsNativelyCompiled para funções In-Memory/procedimentos armazenados. Esta propriedade não é apresentada em SQL Server cuja versão seja anterior a SQL Server 2016. Quando executa o Snapshot Agent no Distributor para SQL Server 2016, este utiliza Microsoft.SqlServer.Smo.dll do SQL Server 2016, mas tenta verificar a existência da propriedade SMO IsNativelyCompiled em relação ao SQL Server 2012 ou 2014 Publisher 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 para SQL Server

Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:

Atualização cumulativa mais recente para o SQL Server 2016

Solução

Para contornar esse problema, crie funções definidas pelo usuário (UDFs) manualmente no assinante.

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.