Συμπτώματα
Ας υποθέσουμε ότι δημιουργείτε μια αποθηκευμένη διαδικασία που χρησιμοποιεί ένα δρομέα σε μια μεταβλητή πίνακα στον Microsoft SQL Server 2012 ή στον SQL Server 2014. Επιπλέον, η αποθηκευμένη διαδικασία ενημερώνει τον πίνακα χρησιμοποιώντας ένα σημείο όπου το ρεύμα της πρότασης μαζί με το δρομέα. Για παράδειγμα, η αποθηκευμένη διαδικασία μπορεί να μοιάζει με την εξής:
CREATE PROCEDURE dbo.usp_TestSP AS BEGIN DECLARE @TableVar TABLE (SomeInt INT NULL) INSERT @TableVar VALUES (NULL) DECLARE @curInt INT, @newInt INT SET @newInt = 1 DECLARE ccc CURSOR LOCAL FOR SELECT SomeInt FROM @TableVar WHERE SomeInt IS NULL OPEN ccc FETCH NEXT FROM ccc INTO @curInt UPDATE @TableVar SET SomeInt = @newInt WHERE CURRENT OF cccCLOSE ccc SELECT * FROM @TableVar END
Όταν εκτελείτε την αποθηκευμένη διαδικασία χρησιμοποιώντας τη sp_refreshsqlmodule αποθηκευμένη διαδικασία συστήματος, ενδέχεται να παρουσιαστεί παραβίαση πρόσβασης και ενδέχεται να λάβετε μηνύματα σφάλματος που μοιάζουν με τα εξής:
MSG 596, επίπεδο 21, κατάσταση 1Cannot να συνεχίσετε την εκτέλεση, επειδή η περίοδος λειτουργίας βρίσκεται στην κατάσταση Kill. Msg 0, επίπεδο 20, κατάσταση 0A σοβαρό σφάλμα παρουσιάστηκε στην τρέχουσα εντολή. Τα αποτελέσματα, εάν υπάρχουν, θα πρέπει να απορρίπτονται.
Σε αυτήν την περίπτωση, τα σφάλματα που μοιάζουν με τα παρακάτω εγγράφονται επίσης στα αρχεία καταγραφής σφαλμάτων του SQL Server:
Date Time. 730 spid51 SqlDumpExceptionHandler: η διαδικασία 51 δημιούργησε ανεπανόρθωτη εξαίρεση C0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.date time.730 spid51 * *******************************************************************************date time.730 spid51 *date time.730 spid51 * BEGIN STACK DUMP:date time.730 spid51 * date time spid 51date time.730 spid51 *date time.730 spid51 *date time.730 spid51 * Exception Address = 00007FFC270236D5 Module(sqllang+00000000005036D5)date time.730 spid51 * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATIONdate time.730 spid51 * Access Violation occurred reading address 0000006F00620074date time.730 spid51 * Input Buffer 136 bytes -date time.730 spid51 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP] ' Date Time. 730 spid51 * Date. 730 spid51 *
Επίλυση
Πληροφορίες αθροιστικής ενημέρωσης
Αυτό το πρόβλημα διορθώνεται στις ακόλουθες ενημερώσεις:
-
Αθροιστική ενημερωμένη έκδοση 13 για τον SQL Server 2014
-
Αθροιστική ενημερωμένη έκδοση 6 για τον SQL Server 2014 Service Pack 1 (SP1)
-
Αθροιστική ενημερωμένη έκδοση 2 για τον SQL Server 2012 Service Pack 3 (SP3)
-
Αθροιστική ενημερωμένη έκδοση 11 για τον SQL Server 2012 Service Pack 2 (SP2)
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".
Αναφορές
Μάθετε περισσότερα σχετικά με την ορολογία που χρησιμοποιεί η Microsoft για την περιγραφή ενημερώσεων λογισμικού.