KB960770 - ΕΠΙΔΙΟΡΘΩΣΗ: Λαμβάνετε το σφάλμα 605 και το σφάλμα 824 όταν εκτελείτε ένα ερώτημα που εισάγει δεδομένα σε έναν προσωρινό πίνακα στο SQL Server

Ισχύει για
SQL Server 2008 Service Pack 3

Σφάλμα: #50003826 (SQL επείγουσας επιδιόρθωσης)

Η Microsoft διανέμει τις διορθώσεις του Microsoft SQL Server 2008 ως ένα αρχείο με δυνατότητα λήψης. Επειδή οι ενημερώσεις κώδικα είναι αθροιστικές, κάθε νέα έκδοση περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις ενημερώσεις κώδικα ασφαλείας που συμπεριλήφθηκαν με την προηγούμενη SQL Server 2008 έκδοση της ενημέρωσης κώδικα.

Συμπτώματα

Στο SQL Server 2008, μπορείτε να εκτελέσετε ένα ερώτημα που εισάγει δεδομένα σε έναν προσωρινό πίνακα. Η πρόταση INSERT περιέχει ένα δευτερεύον ερώτημα που αναφέρεται στον ίδιο προσωρινό πίνακα. Όταν εκτελείτε το ερώτημα, ενδέχεται να λάβετε ένα μήνυμα σφάλματος που μοιάζει με το ακόλουθο:

Σημείωση

Msg 605, Επίπεδο 21, Κατάσταση 3, Γραμμή 1

Η προσπάθεια λήψης της λογικής σελίδας (1:225) στη βάση δεδομένων 2 απέτυχε. Ανήκει στη μονάδα κατανομής 281474980315136 όχι στην 504403158513025024.

Εάν εκτελέσετε ξανά το ερώτημα, θα λάβετε ένα μήνυμα σφάλματος που μοιάζει με το ακόλουθο:

Σημείωση

        

  • Msg 824, Επίπεδο 24, Κατάσταση 2, Γραμμή 1
  • SQL Server εντοπίσει ένα σφάλμα εισόδου/εξόδου βάσει λογικής συνέπειας: εσφαλμένο άθροισμα ελέγχου (αναμενόμενο: 0x50758180, πραγματικό: 0x15658bfc). Συνέβη κατά τη διάρκεια της ανάγνωσης της σελίδας (1:336) στο αναγνωριστικό βάσης δεδομένων 2 σε μετατόπιση 0x000000002a0000 στο αρχείο 'C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Πρόσθετα μηνύματα στο αρχείο καταγραφής σφαλμάτων SQL Server ή στο αρχείο καταγραφής συμβάντων συστήματος ενδέχεται να παρέχουν περισσότερες λεπτομέρειες. Πρόκειται για μια σοβαρή κατάσταση σφάλματος που απειλεί την ακεραιότητα της βάσης δεδομένων και πρέπει να διορθωθεί αμέσως. Ολοκληρώστε έναν πλήρη έλεγχο συνέπειας της βάσης δεδομένων (DBCC CHECKDB). Αυτό το σφάλμα μπορεί να προκληθεί από πολλούς παράγοντες. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα SQL Server Books Online.

Σε ορισμένες περιπτώσεις, ενδέχεται επίσης να λάβετε ένα μήνυμα σφάλματος παρόμοιο με το ακόλουθο:

Σημείωση

Msg 601, Level 12, State 3,Procedure p rocedure name, Line line number
Δεν ήταν δυνατή η συνέχιση της σάρωσης με το NOLOCK λόγω κίνησης δεδομένων.

Μια πιθανή δομή ερωτήματος που μπορεί να παράγει αυτά τα σφάλματα είναι η εξής:

insert #table1
select s.col1, s.col2
from #table2 s inner loop join #table1 t 
on s.col3 = t.col3 

      

Επίλυση

Η επιδιόρθωση για αυτό το πρόβλημα κυκλοφόρησε πρώτα στην αθροιστική ενημερωμένη έκδοση 3. Για περισσότερες πληροφορίες σχετικά με τον τρόπο απόκτησης αυτού του πακέτου αθροιστική ενημερωμένη έκδοση για το SQL Server 2008, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

960484 Πακέτο αθροιστικών ενημερώσεων 3 για το SQL Server 2008Σημείωση Επειδή το build που είναι αθροιστικές, κάθε νέα έκδοση της ενημέρωσης κώδικα περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις ενημερώσεις κώδικα ασφαλείας που συμπεριλήφθηκαν με την προηγούμενη έκδοση SQL Server 2008 της ενημέρωσης κώδικα. Συνιστάται να εξετάσετε την εφαρμογή της πιο πρόσφατης έκδοσης ενημερώσεων κώδικα που περιέχει αυτήν την επείγουσα επιδιόρθωση. Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για προβολή του άρθρου στη Γνωσιακή Βάση της Microsoft:

956909 Το SQL Server 2008 εκδόσεις που κυκλοφόρησαν μετά SQL Server 2008 κυκλοφορήσειΜετά την εγκατάσταση αυτού του πακέτου αθροιστική ενημερωμένη έκδοση, πρέπει να ενεργοποιήσετε σημαία παρακολούθησης 4135. Για να το κάνετε αυτό, μπορείτε να προσθέσετε την παράμετρο εκκίνησης -T4135. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε την πρόταση dbcc traceon(4135) για μια συγκεκριμένη περίοδο λειτουργίας.

Λύση

Για να επιλύσετε αυτό το ζήτημα, προσθέστε μια στήλη που έχει τόσο ένα πρωτεύον κλειδί συμπλέγματος όσο και μια ιδιότητα ταυτότητας στον προσωρινό πίνακα. Για παράδειγμα, εκτελέστε την ακόλουθη πρόταση για να αλλάξετε τον προσωρινό πίνακα:

ALTER TABLE #TempTable
ADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Κατάσταση

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

Περισσότερες πληροφορίες

Παρόλο που εμφανίζεται το μήνυμα σφάλματος 824 ή 605, η βάση δεδομένων δεν καταστρέφεται. Επίσης, αυτά τα μηνύματα λάθους αναφέρονται σε σελίδες από τη βάση δεδομένων tempdb.

Για περισσότερες πληροφορίες σχετικά με τα αρχεία που αλλάζουν και για πληροφορίες σχετικά με τις προϋποθέσεις για την εφαρμογή του πακέτου αθροιστική ενημερωμένη έκδοση που περιέχει την επείγουσα επιδιόρθωση που περιγράφεται σε αυτό το άρθρο της Γνωσιακής Βάσης της Microsoft, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

960484 Αθροιστική ενημερωμένη έκδοση πακέτου 3 για SQL Server 2008

SQL Server 2008 R2 BPA πληροφορίες

Το SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) παρέχει έναν κανόνα για τον εντοπισμό καταστάσεων στις οποίες δεν έχετε ενεργοποιημένη την αθροιστική ενημερωμένη έκδοση ή τη σημαία ανίχνευσης για την αντιμετώπιση αυτού του προβλήματος. Η SQL Server 2008 R2 BPA υποστηρίζει τόσο SQL Server 2008 όσο και SQL Server 2008 R2.

Εάν εκτελέσετε το εργαλείο BPA και αντιμετωπίσετε μια προειδοποίηση "Μηχανισμός βάσεων δεδομένων - διόρθωση σφαλμάτων tempdb ή λείπει η σημαία ανίχνευσης", πρέπει να ελέγξετε την έκδοση του SQL Server και τις σημαίες ανίχνευσης που έχουν ρυθμιστεί για την ενεργοποίηση αυτής της ενημέρωσης κώδικα.

Παραπομπές

Λογισμικό κανόνων Τίτλος κανόνα Αναγνωριστικό κανόνα
Κανόνας SQL Server 2008 R2 BPA σφάλματα tempdb, διόρθωση ή επισήμανση σημαίας που λείπει RID3808

Σημείωση Μπορείτε να ενεργοποιήσετε τη σημαία παρακολούθησης 4135 ή τη σημαία παρακολούθησης 4199 για να ενεργοποιήσετε αυτήν την ενημέρωση κώδικα. Η σημαία παρακολούθησης 4135 παρουσιάστηκε στο πακέτο αθροιστικών ενημερώσεων 3 για SQL Server 2008. Η σημαία παρακολούθησης 4135 είναι επίσης διαθέσιμη στο SQL Server 2008 Service Pack 1, στο SQL Server 2008 Service Pack 2 και στο SQL Server 2008 R2. Η σημαία παρακολούθησης 4199 παρουσιάστηκε στο πακέτο αθροιστικών ενημερώσεων 7 για SQL Server 2008, στο πακέτο αθροιστικών ενημερώσεων 7 για SQL Server Service Pack 1 2008 και στο πακέτο αθροιστικών ενημερώσεων 1 για SQL Server 2008 R2. Για περισσότερες πληροφορίες σχετικά με τη σημαία παρακολούθησης 4199, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

974006 Η σημαία παρακολούθησης 4199 προστίθεται για τον έλεγχο πολλαπλών αλλαγών βελτιστοποίησης ερωτήματος που είχαν γίνει προηγουμένως με πολλαπλές σημαίες παρακολούθησης Επειδή η επιδιόρθωση για αυτό το πρόβλημα περιλαμβάνει ένα συνδυασμό μιας συγκεκριμένης δομής άμεσης επιδιόρθωσης και μιας σημαίας ανίχνευσης για την ενεργοποίηση της ενημέρωσης κώδικα, συμπεριλαμβάνουμε τον ακόλουθο πίνακα για να εμφανίσουμε τα διαφορετικά σενάρια και την προτεινόμενη ενέργεια που πρέπει να κάνετε για κάθε σενάριο.

SQL Server προτάσεων ενημέρωσης σημαίας δόμησης και ανίχνευσης

  Για περισσότερες πληροφορίες σχετικά με τις πιο πρόσφατες δομές του SQL Server, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για προβολή του άρθρου στη Γνωσιακή Βάση της Microsoft:

957826 Πού να βρείτε πληροφορίες σχετικά με τις πιο πρόσφατες δομές SQL Server

Παραπομπές

Για περισσότερες πληροφορίες σχετικά με τη λίστα των δομών που είναι διαθέσιμες μετά την κυκλοφορία του SQL Server 2008, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής βάσης της Microsoft:

956909 Οι εκδόσεις του SQL Server 2008 που κυκλοφόρησαν μετά την κυκλοφορία του SQL Server 2008

Για περισσότερες πληροφορίες σχετικά με το μοντέλο τμηματικής συντήρησης για το SQL Server, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

935897 Ένα μοντέλο τμηματικής συντήρησης είναι διαθέσιμο από την ομάδα SQL Server για την παροχή επειγουσών επιδιορθώσεων για τα προβλήματα που έχουν αναφερθεί

Για περισσότερες πληροφορίες σχετικά με τη διάταξη ονομασίας για ενημερωμένες εκδόσεις SQL Server, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

822499 Νέα διάταξη ονομασίας για τα πακέτα ενημερωμένων εκδόσεων λογισμικού του Microsoft SQL Server Για περισσότερες πληροφορίες σχετικά με την ορολογία ενημερωμένων εκδόσεων λογισμικού, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

824684 Περιγραφή της βασικής ορολογίας που χρησιμοποιείται για την περιγραφή ενημερωμένων εκδόσεων λογισμικού της Microsoft