Sintomi
Si supponga di avere una configurazione in cui Microsoft SQL Server 2016 funge da server di distribuzione e SQL Server 2014 o SQL Server 2012 funge da server di pubblicazione. In questa configurazione, se si crea uno snapshot o una pubblicazione transazionale o di tipo merge in SQL Server 2012 o SQL Server 2014 Publisher con funzione definita dall'utente come articolo, l'agente di snapshot non riesce durante l'esecuzione di query definite dall'utente e viene visualizzato un messaggio di errore simile al seguente:
Nota
Script non riuscito per UserDefinedFunction 'schema.functionname'
Dalla cronologia dei processi dell'agente di snapshot viene visualizzato il messaggio di errore seguente:
Nota
<DateTime> [5%] L'agente di replica ha rilevato un'eccezione
<Origine DateTime> : Sconosciuto
<Tipo di eccezione DateTime> : Microsoft.SqlServer.Management.Smo.FailedOperationException
<Messaggio di eccezione DateTime> : Script non riuscito per UserDefinedFunction 'schema.functionname'
<Codice messaggio DateTime> : Non applicabile
Causa
Questo problema si verifica perché l'agente di snapshot usa Miscrosft.SqlServer.Smo.dll SMO per scrivere articoli. SQL Server 2016 aggiunge una nuova proprietà SMO IsNativelyCompiled per In-Memory funzioni/stored procedure. Questa proprietà non è presente in SQL Server la cui versione è precedente a SQL Server 2016. Quando si esegue il agente di snapshot in Server di distribuzione per SQL Server 2016, viene utilizzato Microsoft.SqlServer.Smo.dll di SQL Server 2016, ma tenta di verificare la proprietà IsNativelyCompiled di SMO rispetto a SQL Server Publisher 2012 o 2014 e l'operazione non riesce con l'errore precedente.
Risoluzione
Questo problema è stato risolto negli aggiornamenti cumulativi seguenti per SQL Server:
Aggiornamento cumulativo 2 per SQL Server 2016 SP1
Aggiornamento cumulativo 4 per SQL Server 2016
Informazioni sugli aggiornamenti cumulativi per SQL Server
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni rapide e di sicurezza incluse nell'aggiornamento cumulativo precedente. Vedere gli aggiornamenti cumulativi più recenti per SQL Server:
Aggiornamento cumulativo più recente per SQL Server 2016
Soluzione alternativa
Per risolvere questo problema, creare manualmente funzioni definite dall'utente nel Sottoscrittore.
Stato
Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.