Συμπτώματα
Εξετάστε το ακόλουθο σενάριο:
-
Χρησιμοποιείτε τον Microsoft SQL Server 2012 ή τον SQL Server 2014.
-
Έχετε τη βάση δεδομένων που έχει το Service Broker ενεργοποιημένο στην κύρια ρεπλίκα.
-
Δημιουργείτε αντίγραφα ασφαλείας της βάσης δεδομένων στον πρωτεύοντα διακομιστή που έχει ενεργοποιημένο το Service Broker και την επαναφορά του στο δευτερεύοντα διακομιστή.
-
Ως μέρος του ορισμού της ομάδας διαθεσιμότητας μεταξύ των κύριων και των δευτερευόντων διακομιστών, προσπαθείτε να συμμετέχετε στη βάση δεδομένων στην ομάδα διαθεσιμότητα, χρησιμοποιώντας τον Οδηγό νέας ομάδας διαθεσιμότητας ή την εντολή: τροποποίηση ΒΆΣΗς δεδομένων <βάσης> ΟΡΙΣΜΌς ΟΜΆΔΑς διαθεσιμότητας HADR = <agname>
Σε αυτό το σενάριο, καταγράφεται το ακόλουθο σφάλμα στο αρχείο καταγραφής σφαλμάτων του SQL Server:
{Error: 3449, σοβαρότητα: 21, κατάσταση: 1. ο SQL Server πρέπει να τερματίζεται προκειμένου να ανακτήσει μια βάση δεδομένων (αναγνωριστικό βάσης δεδομένων 1). Η βάση δεδομένων είναι είτε μια βάση δεδομένων χρήστη που δεν ήταν δυνατό να διακοπεί είτε μια βάση δεδομένων συστήματος. Επανεκκινήστε τον SQL Server. Εάν η βάση δεδομένων αποτύχει να ανακτήσει μετά από μια άλλη εκκίνηση, η επιδιόρθωση ή η ανίχνευση restoreSQL διακόπηκε λόγω τερματισμού του διακομιστή. Αναγνωριστικό ανίχνευσης = ' 1 '. Αυτό είναι ένα ενημερωτικό μήνυμα μόνο. Δεν απαιτείται ενέργεια χρήστη.}
Αιτία
Αυτό το ζήτημα παρουσιάζεται επειδή εάν έχει δημιουργηθεί αντίγραφο ασφαλείας της βάσης δεδομένων με δυνατότητα Broker υπηρεσίας και επαναφορά στον δευτερεύοντα διακομιστή, ο Broker υπηρεσίας στη βάση δεδομένων που έχει αποκατασταθεί δεν είναι ενεργοποιημένος. Η βάση δεδομένων εξακολουθεί να διατηρεί ένα Αναγνωριστικό υπηρεσίας Broker εσωτερικά. Όταν προσθέτετε τη βάση δεδομένων που έχει αποκατασταθεί στον δευτερεύοντα διακομιστή στην ομάδα διαθεσιμότητα, ο Broker υπηρεσίας είναι ενεργοποιημένος. Ανιχνεύεται το ίδιο GUID στη βάση δεδομένων διαθεσιμότητας και το ακόλουθο σφάλμα ενεργοποιείται (αθόρυβα): 9772 "το Service Broker στη βάση δεδομένων"<βάσης>"δεν μπορεί να ενεργοποιηθεί, επειδή υπάρχει ήδη ένας ενεργοποιημένος μεσίτης υπηρεσιών με το ίδιο αναγνωριστικό". Αυτό έχει ως αποτέλεσμα το σφάλμα 3449 καθώς η βάση δεδομένων συμμετέχει στην ομάδα διαθεσιμότητας και προκαλεί απροσδόκητο τερματισμό του SQL Server.
Επίλυση
Το πρόβλημα διορθώθηκε για πρώτη φορά με την ακόλουθη αθροιστική ενημέρωση του SQL Server.
Αθροιστική ενημερωμένη έκδοση 1 για τον SQL Server 2014 /en-us/help/2931693
Αθροιστική ενημερωμένη έκδοση 9 για SQL Server 2012 SP1 /en-us/help/2931078
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".