Συμπτώματα
Ένα σφάλμα διεκδίκησης μπορεί να προκύψει όταν η Microsoft SQL Server εκτελεί επανειλημμένα μια αποθηκευμένη διαδικασία που εκτελεί τα εξής:
- Λαμβάνει ένα μεγάλο αντικείμενο, όπως varchar(max) ή varbinary(max), ως όρισμα και
- Δημιουργεί έναν προσωρινό πίνακα με εύρος στην εκτέλεση της διαδικασίας και
- Χρησιμοποιεί το όρισμα του μεγάλου αντικειμένου στον προσωρινό πίνακα.
Στο αρχείο καταγραφής σφαλμάτων SQL Server μπορείτε να βρείτε το σφάλμα διεκδίκησης που μοιάζει με το εξής:
SPID ημερομηνίας/ώρας Σφάλμα: 17065, σοβαρότητα: 16, κατάσταση: 1.
Διεκδίκηση SPID ημερομηνίας/ώρας SQL Server: Αρχείο: FilePath\FileName, γραμμή = LineNumber Αποτυχημένη διεκδίκηση = 'fFalse' Προσπάθεια πρόσβασης στη λαβή αντικειμένων blob που έχει λήξει (1). Αυτό το σφάλμα μπορεί να σχετίζεται με το χρονισμό. Εάν το σφάλμα παραμένει μετά την επανεκτέλεση της πρότασης, χρησιμοποιήστε DBCC CHECKDB για να ελέγξετε τη δομική ακεραιότητα της βάσης δεδομένων ή επανεκκινήστε το διακομιστή για να βεβαιωθείτε ότι οι δομές δεδομένων στη μνήμη δεν είναι κατεστραμμένες.
SPID ημερομηνίας/ώρας Σφάλμα: 3624, σοβαρότητα: 20, κατάσταση: 1.
SPID ημερομηνίας/ώρας Απέτυχε ένας έλεγχος διεκδίκησης συστήματος. Ελέγξτε το SQL Server αρχείο καταγραφής σφαλμάτων για λεπτομέρειες. Συνήθως, μια αποτυχία διεκδίκησης προκαλείται από ένα σφάλμα λογισμικού ή καταστροφή δεδομένων. Για να ελέγξετε για καταστροφή βάσης δεδομένων, εξετάστε το ενδεχόμενο να εκτελέσετε DBCC CHECKDB. Εάν συμφωνήσατε να αποστέλλονται αντίγραφα στη Microsoft κατά τη διάρκεια της εγκατάστασης, θα αποστέλλεται μια μικρή ένδειξη σφαλμάτων στη Microsoft. Ενδέχεται να είναι διαθέσιμη μια ενημερωμένη έκδοση από τη Microsoft στο πιο πρόσφατο Service Pack ή σε μια επείγουσα επιδιόρθωση από την τεχνική υποστήριξη.
Αιτία
SQL Server διαθέτει εσωτερική λογική για την απενεργοποίηση της προσωρινής αποθήκευσης ερωτημάτων που αναφέρονται σε μεγάλα αντικείμενα, έτσι ώστε οι επόμενες εκτελέσεις να μην αναφέρονται σε αυτές τις βιβλιοθήκες LOB (οι οποίες δημιουργήθηκαν κατά τη διάρκεια προηγούμενων εκτελέσεων και επομένως δεν είναι έγκυρες για επόμενες εκτελέσεις). Αυτή η λογική δεν χειρίστηκε την περίπτωση της Ανάλυσης μετατεθειμένων ονομάτων (Deferred Name Resolution - DNR) σε προσωρινούς πίνακες που προκάλεσαν την προσωρινή αποθήκευση αυτών των σχεδίων. Η δημιουργία προσωρινών πινάκων με εμβέλεια είναι δαπανηρή και SQL Server τους αποθηκεύει προσωρινά για επαναχρησιμοποίηση σε επόμενες εκτελέσεις. Αυτό αποτρέπει την εκ νέου μεταγλώττιση τέτοιων ερωτημάτων λόγω αλλαγών σχήματος.
Μάθετε περισσότερα σχετικά με την Επίλυση ονόματος σε αναβολή.
Επίλυση
Αυτό το πρόβλημα διορθώνεται στις ακόλουθες αθροιστικές ενημερώσεις για SQL Server:
Αθροιστική ενημερωμένη έκδοση 8 για SQL Server 2016 SP1
Αθροιστική ενημέρωση 4 για το SQL Server 2017
Αθροιστική ενημερωμένη έκδοση 10 για SQL Server 2014 Service Pack 2
Πληροφορίες σχετικά με τις αθροιστικές ενημερώσεις για SQL Server
Κάθε νέα αθροιστική ενημερωμένη έκδοση για SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και ενημερώσεις κώδικα ασφαλείας που υπήρχαν στην προηγούμενη δομή. Δείτε την πιο πρόσφατη αθροιστική ενημέρωση για SQL Server:
Τελευταία αθροιστική ενημέρωση για το SQL Server 2016
Τελευταία αθροιστική ενημέρωση για το SQL Server 2017
Τελευταίες αθροιστικές ενημερώσεις για το SQL Server 2014
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".
Παραπομπές
Ενημερωθείτε σχετικά με την ορολογία που χρησιμοποιεί η Microsoft για να περιγράφει τις ενημερώσεις λογισμικού.