KB3197883 – KORJAUS: Tilannevedosagentti epäonnistuu, kun julkaiset UDF:ejä SQL Server 2016 Distributorille tapahtumareplikoinnissa

Käytetään kohteeseen
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

Ongelman ilmenemistapa

Oletetaan, että sinulla on määritys, jossa Microsoft SQL Server 2016 toimii jakelijana ja SQL Server 2014 tai SQL Server 2012 toimii julkaisijana. Jos luot tässä määrityksessä tilannevedoksen, tapahtuma- tai yhdistämisjulkaisun SQL Server 2012:ssa tai SQL Server 2014 Publisherissa, jossa on artikkelina käyttäjän määrittämä funktio (UDF), tilannevedosagentti epäonnistuu UDF:n komentosarjaa suoritettaessa ja näyttöön tulee seuraavankaltainen virhesanoma:

Huomautus

Komentosarja epäonnistui kohteelle UserDefinedFunction 'schema.functionname'

Seuraava virhesanoma näkyy tilannevedosagentin työhistoriassa:

Huomautus

<DateTime> [5%] Replikointiagentti havaitsi poikkeuksen
<DateTime> Lähde: Tuntematon
<DateTime-poikkeustyyppi> : Microsoft.SqlServer.Management.Smo.FailedOperationException
<DateTime-poikkeusviesti> : Komentosarja epäonnistui kohteelle UserDefinedFunction 'schema.functionname'
<DateTime-viestikoodi> : Ei sovellettavissa

Syy

Tämä ongelma ilmenee, koska tilannevedosagentti käyttää SMO-Miscrosft.SqlServer.Smo.dll artikkelien komentosarjoissa. SQL Server 2016 lisää uuden SMO-ominaisuuden IsNativelyCompiled In-Memory funktioita tai tallennettuja toimintosarjoja varten. Tätä ominaisuutta ei esiinny SQL Server, jonka versio on vanhempi kuin SQL Server 2016:n. Kun suoritat Defenderin tilannevedosagentin SQL Server 2016:n jakelijassa, se käyttää SQL Server 2016:n Microsoft.SqlServer.Smo.dll, mutta se yrittää tarkistaa SMO-ominaisuuden IsNativelyCompiled SQL Server 2012 tai 2014 Publisheria vastaan, mutta se epäonnistuu ja antaa edellä olevan virheen.

Ratkaisu

Tämä ongelma on korjattu seuraavissa SQL Server kumulatiivisissa päivityksissä:

SQL Server 2016 SP1:n kumulatiivinen päivitys 2

SQL Server 2016:n kumulatiivinen päivitys 4

Tietoja SQL Serverin kumulatiivisista päivityksistä

Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Tutustu SQL Serverin uusimpiin kumulatiivisiin päivityksiin:

SQL Server 2016:n uusin kumulatiivinen päivitys

Vaihtoehtoinen menetelmä

Voit kiertää tämän ongelman luomalla käyttäjän määrittämät funktiot manuaalisesti Tilaajassa.

Tila

Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.

Viitteet

Lue tietoja Microsoftin ohjelmistopäivitystensä kuvaamiseen käyttämästä sanastosta.