Sintomas
Assuma que tem uma configuração em que o Microsoft SQL Server 2016 está a atuar como Distribuidor e SQL Server 2014 ou SQL Server 2012 está a atuar como Editor. Nesta configuração, se criar um instantâneo, ou uma publicação transacional ou de fusão no SQL Server 2012 ou SQL Server 2014 Publisher com função definida pelo utilizador (UDF) como um artigo, então o Agente Instantâneo falha enquanto scripta uDF, e recebe uma mensagem de erro que se assemelha ao seguinte:
Script falhou para UserDefinedFunction 'schema.functionname'
A seguinte mensagem de erro é vista a partir do histórico de trabalho do Agente Snapshot:
<DateTime> [5%] The replication agent had encountered an exception<DateTime> Source: Unknown<DateTime> Exception Type: Microsoft.SqlServer.Management.Smo.FailedOperationException<DateTime> Exception Message: Script failed for UserDefinedFunction 'schema.functionname'<DateTime> Message Code: Not Applicable
Causa
Este problema ocorre porque o Agente Snapshot usa smo Miscrosft. SqlServer.Smo.dll para artigos de script. O servidor SQL 2016 adiciona uma nova propriedade SMO IsNativelyCompiled para funções na memória/procedimentos armazenados. Esta propriedade não é apresentada no SQL Server cuja versão é mais cedo que o SQL Server 2016. Quando executou o Agente Snapshot no Distribuidor para SQL Server 2016, utiliza microsoft.SqlServer.Smo.dll do SQL Server 2016, mas tenta verificar se a propriedade SMO é NãoativamenteCompilada contra o SQL Server 2012 ou 2014 Publisher e falha com o erro acima.
Resolução
Esta emissão é corrigida nas seguintes atualizações cumulativas para o SQL Server: Atualização Cumulativa 2 para SQL Server 2016 SP1Atualização Cumulativa 4 para SQL Server 2016
Cada nova atualização cumulativa do 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. Confira as últimas atualizações cumulativas do SQL Server: Última atualização cumulativa para SQL Server 2016
Solução
Para contornar este problema, crie funções definidas pelo utilizador (UDF's) manualmente no Assinante.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Conheça a terminologiaque a Microsoft utiliza para descrever atualizações de software.