Συμπτώματα
Ας υποθέσουμε ότι χρησιμοποιείτε τη δυνατότητα "ομάδες διαθεσιμότητας AlwaysOn" στον Microsoft SQL Server 2012. Όταν αλλάζετε την πρόσβαση σύνδεσης της δευτερεύουσας ρεπλίκας από "αναγνώσιμο" σε "μη αναγνώσιμο", παρουσιάζεται καταστροφή σε σελίδες που χρησιμοποιούν τη συμπίεση σελίδας στη δεδομένη ρεπλίκα.Οι βάσεις δεδομένων διαθεσιμότητας που αντιμετωπίζουν αυτό το πρόβλημα στη δευτερεύουσα ρεπλίκα δεν μπορούν να ανακτηθούν εξαιτίας ενός σφάλματος κατά τη φάση επανάληψης του συγχρονισμού. Η δευτερεύουσα ρεπλίκα δεν θα συγχρονιστεί με την κύρια ρεπλίκα και θα αναφέρει μια κατάσταση συγχρονισμού του "SUSPEND_FROM_REDO". Επιπλέον, λαμβάνετε τα ακόλουθα μηνύματα σφάλματος στο αρχείο καταγραφής σφαλμάτων του SQL Server που φιλοξενεί τη δευτερεύουσα ρεπλίκα:
<ημερομηνία> <ώρα> SPID<Αναγνωριστικό> σφάλμα: 17066, σοβαρότητα: 16, κατάσταση: 1. <ημερομηνία> <ώρα> SPID> <0 Αναγνωριστικό> ισχυρισμός SQL Server: file: <Page. cpp>, line = 3898 Failed ισχυρισμός = "! pageFull". Αυτό το σφάλμα μπορεί να σχετίζεται με το χρονοδιάγραμμα. Εάν το σφάλμα παραμένει μετά την εκ νέου εκτέλεση της πρότασης, χρησιμοποιήστε την εντολή DBCC CHECKDB για να επιλέξετε τη βάση δεδομένων για δομική ακεραιότητα ή επανεκκινήστε το διακομιστή για να εξασφαλίσετε ότι οι δομές δεδομένων στη μνήμη δεν είναι κατεστραμμένες. <ημερομηνία> <ώρα> SPID<Αναγνωριστικό> σφάλμα: 3624, σοβαρότητα: 20, κατάσταση: 1 . <ημερομηνία> <ώρα Επιλέξτε το αρχείο καταγραφής σφαλμάτων του SQL Server για λεπτομέρειες. Συνήθως, μια Αποτυχία διεκδίκησης προκαλείται από σφάλμα λογισμικού ή καταστροφή δεδομένων. Για να κάνετε μεταβίβαση ελέγχου για καταστροφή της βάσης δεδομένων, εξετάστε το ενδεχόμενο εκτέλεσης DBCC CHECKDB. Εάν συμφωνήσατε να στείλετε χωματερές στη Microsoft κατά τη διάρκεια της εγκατάστασης, θα σταλεί μια μικρή ένδειξη σφαλμάτων στη Microsoft. Μια ενημέρωση μπορεί να είναι διαθέσιμη από τη Microsoft στο πιο πρόσφατο Service Pack ή σε ένα QFE από την τεχνική υποστήριξη. <ημερομηνία> <ώρα> SPID<Αναγνωριστικό> την κίνηση δεδομένων των ομάδων διαθεσιμότητας AlwaysOn για τη βάση δεδομένων ' <όνομα βάσης δεδομένων> ' έχει ανασταλεί για τον ΕΞΉς λόγο: "System" (Source ID 2; Συμβολοσειρά προέλευσης: "SUSPEND_FROM_REDO"). Για να συνεχίσετε την κίνηση δεδομένων στη βάση δεδομένων, θα πρέπει να συνεχίσετε τη βάση δεδομένων με μη αυτόματο τρόπο. Για πληροφορίες σχετικά με τον τρόπο με τον οποίο μπορείτε να συνεχίσετε μια βάση δεδομένων διαθεσιμότητας, ανατρέξτε στο θέμα SQL Server Books Online. <ημερομηνία> <ώρα> SPID<Αναγνωριστικό> σφάλμα: 3313, σοβαρότητα: 21, κατάσταση: 2. <ημερομηνία> <ώρα> Αναγνωριστικό SPID> <0> κατά την επανάληψη μιας λειτουργίας που έχει καταγραφεί στη βάση δεδομένων "<όνομα βάσης δεδομένων> 1786:4978584:74" Συνήθως, η συγκεκριμένη αποτυχία καταγράφηκε προηγουμένως ως σφάλμα στην υπηρεσία καταγραφής συμβάντων των Windows. Επαναφέρετε τη βάση δεδομένων από ένα πλήρες αντίγραφο ασφαλείας ή επιδιορθώστε τη βάση δεδομένων. <ημερομηνία> <ώρα> SPID<Αναγνωριστικό> τροποποίηση παραμέτρων DB Option: συνέχιση<ημερομηνία> <ώρα> αναγνωριστικό SPID> <0 Αναγνωριστικό> AlwaysOn διαθεσιμότητας ομάδες δεδομένων η κίνηση δεδομένων για τη βάση δεδομένων ' <όνομα βάσης δεδομένων> ' έχει αποκατασταθεί. Αυτό είναι ένα ενημερωτικό μήνυμα μόνο. Δεν απαιτείται καμία ενέργεια χρήστη. <ημερομηνία> <ώρα> SPID<Αναγνωριστικό> μη εξουσιοδοτημένες συναλλαγές επανέρχονται στη βάση δεδομένων <όνομα βάσης δεδομένων> για μια αλλαγή κατάστασης των ομάδων διαθεσιμότητας του AlwaysOn. Εκτιμώμενη ολοκλήρωση επαναφοράς: 100%. Αυτό είναι ένα ενημερωτικό μήνυμα μόνο. Δεν απαιτείται καμία ενέργεια χρήστη. <ημερομηνία> <ώρα> SPID<Αναγνωριστικό> σύνδεση ομάδων διαθεσιμότητας του AlwaysOn με την κύρια βάση δεδομένων τερματίστηκε για τη δευτερεύουσα βάση δεδομένων ' <όνομα βάσης δεδομένων> ' στη ρεπλίκα διαθεσιμότητας με αναγνωριστικό ρεπλίκας: {bbdedecb-f26b-47e9-9e7d-7c22f99edb23}. Αυτό είναι ένα ενημερωτικό μήνυμα μόνο. Δεν απαιτείται καμία ενέργεια χρήστη. <ημερομηνία> <ώρα> SPID<Αναγνωριστικό> εκκίνηση της βάσης δεδομένων "<όνομα βάσης δεδομένων>". <ημερομηνία> <ώρα> SPID> <2 Αναγνωριστικό> ανάκτηση της βάσης δεδομένων "<όνομα βάσης δεδομένων>" (13) είναι 0% ολοκλήρωσης (περίπου 781 δευτερόλεπτα παραμένουν). Φάση 1 από 3. Αυτό είναι ένα ενημερωτικό μήνυμα μόνο. Δεν απαιτείται ενέργεια χρήστη.......
Επίλυση
Το πρόβλημα διορθώθηκε για πρώτη φορά με την ακόλουθη αθροιστική ενημέρωση του SQL Server.
Αθροιστική ενημερωμένη έκδοση 6 για τον SQL server 2012 SP2 αθροιστική ενημέρωση 16 για τον SQL Server 2012 SP1
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Περισσότερες πληροφορίες
Το προηγούμενο πρόβλημα μπορεί να προκύψει όταν αλλάξει η πρόσβαση ανάγνωσης για τη δευτερεύουσα ρεπλίκα. Μπορείτε να καθορίσετε την πρόσβαση ανάγνωσης των βάσεων δεδομένων διαθεσιμότητας στη δευτερεύουσα ρεπλίκα, χρησιμοποιώντας τις ακόλουθες δύο μεθόδους:
-
Ορίστε την πρόσβαση ανάγνωσης χρησιμοποιώντας την εντολή Τροποποίηση ΟΜΆΔΑς ΔΙΑΘΕΣΙΜΌΤΗΤΑς:
ALTER AVAILABILITY GROUP [AGName]MODIFY REPLICA ON N'<SRV>' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = NO))
-
Ορίστε την πρόσβαση ανάγνωσης, αλλάζοντας τις ρυθμίσεις στην Εξερεύνηση αντικειμένων του SQL Server Management Studio (SSMS):
-
Συνδεθείτε στο διακομιστή και, στη συνέχεια, ανοίξτε το φάκελο διαθεσιμότητας AlwaysOn.
-
Ανοίξτε το φάκελο "ομάδες διαθεσιμότητας".
-
Κάντε δεξί κλικ στην ομάδα διαθεσιμότητα και επιλέξτε Ιδιότητες.
-
Αλλάξτε την αναγνώσιμη δευτερεύουσα ιδιότητα για τη δευτερεύουσα ρεπλίκα σε Όχικαι, στη συνέχεια, κάντε κλικ στο κουμπί OK.
-
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".