KB3197883 - ΕΠΙΔΙΌΡΘΩΣΗ: Παράγοντας στιγμιότυπου αποτυγχάνει όταν δημοσιεύετε UDF στον διανομέα SQL Server 2016 στην αναπαραγωγή συναλλαγών

Ισχύει για
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

Συμπτώματα

Ας υποθέσουμε ότι έχετε μια εγκατάσταση όπου Microsoft SQL Server 2016 ενεργεί ως διανομέας και SQL Server 2014 ή SQL Server 2012 ενεργεί ως εκδότης. Σε αυτή τη ρύθμιση, εάν δημιουργήσετε ένα στιγμιότυπο, μια δημοσίευση συναλλαγών ή συγχώνευσης στο SQL Server 2012 ή SQL Server 2014 Publisher με συνάρτηση καθορισμένη από το χρήστη (UDF) ως άρθρο, τότε ο παράγοντας στιγμιότυπου αποτυγχάνει κατά τη δημιουργία δέσμης ενεργειών UDF και λαμβάνετε ένα μήνυμα σφάλματος παρόμοιο με το ακόλουθο:

Σημείωση

Αποτυχία δέσμης ενεργειών για το UserDefinedFunction 'schema.functionname'

Το ακόλουθο μήνυμα σφάλματος εμφανίζεται από το ιστορικό εργασιών του παράγοντα στιγμιότυπου:

Σημείωση

<DateTime> [5%] Ο παράγοντας αναπαραγωγής αντιμετώπισε μια εξαίρεση
<Προέλευση ημερομηνίας/ώρας> : Άγνωστη
<Τύπος εξαίρεσης ημερομηνίας/ώρας> : Microsoft.SqlServer.Management.Smo.FailedOperationException
<Μήνυμα εξαίρεσης ημερομηνίας/ώρας> : Η δέσμη ενεργειών απέτυχε για το UserDefinedFunction 'schema.functionname'
<Κωδικός μηνύματος ημερομηνίας/ώρας> : Δεν ισχύει

Αιτία

Αυτό το ζήτημα παρουσιάζεται επειδή ο παράγοντας στιγμιότυπου χρησιμοποιεί SMO Miscrosft.SqlServer.Smo.dll για τη δημιουργία δέσμης ενεργειών άρθρων. Ο SQL Server 2016 προσθέτει μια νέα ιδιότητα SMO IsNativelyCompiled για In-Memory συναρτήσεις/αποθηκευμένες διαδικασίες. Αυτή η ιδιότητα δεν παρουσιάζεται σε SQL Server του οποίου η έκδοση είναι παλαιότερη από SQL Server 2016. Όταν εκτελείτε τον παράγοντα στιγμιότυπου στο διανομέα για SQL Server 2016, χρησιμοποιεί Microsoft.SqlServer.Smo.dll του SQL Server 2016, αλλά προσπαθεί να ελέγξει για την ιδιότητα SMO IsNativelyCompiled έναντι SQL Server 2012 ή 2014 Publisher και αποτυγχάνει με το παραπάνω σφάλμα.

Επίλυση

Αυτό το πρόβλημα διορθώνεται στις ακόλουθες αθροιστικές ενημερώσεις για SQL Server:

Αθροιστική ενημερωμένη έκδοση 2 για SQL Server 2016 SP1

Αθροιστική ενημερωμένη έκδοση 4 για SQL Server 2016

Πληροφορίες σχετικά με τις αθροιστικές ενημερώσεις για SQL Server

Κάθε νέα αθροιστική ενημερωμένη έκδοση για SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις ενημερώσεις κώδικα ασφαλείας που συμπεριλήφθηκαν με την προηγούμενη αθροιστική ενημερωμένη έκδοση. Δείτε τις πιο πρόσφατες αθροιστικές ενημερώσεις για SQL Server:

Τελευταία αθροιστική ενημέρωση για το SQL Server 2016

Λύση

Για να επιλύσετε αυτό το πρόβλημα, δημιουργήστε συναρτήσεις που ορίζονται από το χρήστη (UDF) με μη αυτόματο τρόπο στο συνδρομητή.

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".

Παραπομπές

Ενημερωθείτε για την ορολογία που χρησιμοποιεί η Microsoft για να περιγράφει τις ενημερώσεις λογισμικού.