Η Microsoft διανέμει επιδιορθώσεις του Microsoft SQL Server 2012 σε ένα αρχείο με δυνατότητα λήψης. Επειδή οι επιδιορθώσεις είναι αθροιστικές, κάθε νέα έκδοση περιέχει όλες τις άμεσες επιδιορθώσεις και όλες τις ενημερώσεις ασφαλείας που περιλαμβάνονταν στην προηγούμενη ενημέρωση SQL Server 2012.
Συμπτώματα
Εξετάστε το ακόλουθο σενάριο:
-
Μπορείτε να δημιουργήσετε μια αποθηκευμένη διαδικασία που χρησιμοποιεί μια παράμετρο με τιμή πίνακα (TVP) στο Microsoft SQL Server 2012.
-
Μπορείτε να χρησιμοποιήσετε το SQL Profiler ή SQL Server εκτεταμένα συμβάντα για να καταγράψετε τα συμβάντα RPC:Starting και RPC:Completed.
-
Εκτελείτε ένα ερώτημα που χρησιμοποιεί το TVP.
-
Το χρονικό όριο του ερωτήματος λήξης.
Σε αυτό το σενάριο, παρουσιάζεται ένα σφάλμα χρονοδιαγράμματος που δεν αποδίδει και τα ερωτήματα που εκτελούνται στο ίδιο χρονοδιάγραμμα εκτελούνται αργά. Επιπλέον, δημιουργείται ένα αρχείο mini-dump στο φάκελο καταγραφής SQL Server.Όταν παρουσιάζεται αυτό το πρόβλημα, λαμβάνετε ένα μήνυμα σφάλματος που μοιάζει με το ακόλουθο:
System.Data.SqlClient.SqlException (0x80131904): Το χρονικό όριο έληξε. Το χρονικό όριο που πέρασε πριν από την ολοκλήρωση της λειτουργίας ή ο διακομιστής δεν αποκρίνεται.at System.Data.SqlClient.SqlInternalConnection.OnError(εξαίρεση SqlException, Boolean breakConnection)στη διεύθυνση System.Data.SqlClient.TdsParsEr.ThrowExceptionAndWarning()στο System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObject, Σφάλμα UInt32)στη διεύθυνση System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObject)στην τοποθεσία System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()at System.Data.SqlClient.TdsParserStateObject.ReadByte()at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)στο System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Μέθοδος συμβολοσειράς, αποτέλεσμα DbAsyncResult)στο System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(αποτέλεσμα DbAsyncResult, Μέθοδος συμβολοσειράςName, Boolean sendToPipe)at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()στο TVPApp.Program.Main(String[] args)
Το σφάλμα του χρονοδιαγράμματος που δεν αποδίδει μαζί με ένα μήνυμα σφάλματος που μοιάζει με το ακόλουθο καταγράφεται στο αρχείο καταγραφής σφαλμάτων SQL Server:
διακομιστής> ώρας><ημερομηνίας <με χρήση της έκδοσης "dbghelp.dll" "4.0.5"<διακομιστή> ώρας><ημερομηνίας ***Δεν είναι δυνατή η λήψη περιβάλλοντος νήματος για spid #<><ώρα> server * *******************************************************************************><2 ******************************************************************************* Διακομιστής> ώρας><ημερομηνίας><8 *><6 ημερομηνίας><ώρας> server * BEGIN STACK DUMP:><0 Διακομιστής> ώρας><ημερομηνίας <><ώρας *> spid #><8 ημερομηνίας><ώρας> server *><2 Date><Time> Server * Διακομιστής><6><6 ημερομηνίας><ώρας> *<Διακομιστής<ημερομηνίας><> ώρας * *******************************************************************************<0x20000001><ώρας> διακομιστή για την αποτύπωση 0x000000000000002C<ημερομηνία><> 0x20000001 διαδικασίας εξωτερικής αποτύπωση διακομιστή.Η διεργασία εξωτερικής ένδειξης δεν επέστρεψε σφάλματα.<Ημερομηνία><Ώρα> Server Διεργασία 0:0:0 (0x1670) Ο εργαζόμενος 0x0000000004EDE160 φαίνεται να μην αποδίδει στο Χρονοδιάγραμμα 5. Χρόνος δημιουργίας νήματος: 13014210386757. Approx Thread CPU Used: kernel 0 ms, user 70106 ms. Χρήση διεργασίας 16%. Αδράνεια συστήματος 77%. Διάστημα: 70140 ms.<Ημερομηνία><Ώρα> Server Διεργασία 0:0:0 (0x1670) Ο εργαζόμενος 0x0000000004EDE160 φαίνεται να μην αποδίδει στο Χρονοδιάγραμμα 5. Χρόνος δημιουργίας νήματος:
Αιτία
Αυτό το πρόβλημα παρουσιάζεται λόγω σφάλματος στον μηχανισμό βάσεων δεδομένων SQL Server 2012. Οι στήλες κειμένου στο TVP εφαρμόζονται ως εισαγωγή συμβολοσειρών ή buffer και η αύξηση του αριθμού των γραμμών αυξάνει τον αριθμό των buffer. Ωστόσο, η διαδικασία που απελευθερώνει buffer είναι χρονοβόρα. Επομένως, δημιουργείται ένα σφάλμα χρονοδιαγράμματος που δεν αποδίδει κατά τις λειτουργίες απελευθέρωσης και σμίκρυνσης. Σημείωση Ένα παρόμοιο πρόβλημα έχει αντιμετωπιστεί στο ακόλουθο άρθρο της Γνωσιακής βάσης της Microsoft. Ωστόσο, το πακέτο αθροιστικής ενημέρωσης που περιγράφεται στο άρθρο δεν αφορά πρόβλημα χρονικού θέματος ερωτήματος.
2520808 ΔΙΟΡΘΩΣΗ: Σφάλμα χρονοδιαγράμματος που δεν αποδίδει κατά την εκτέλεση ενός ερωτήματος που χρησιμοποιεί ένα TVP στο SQL Server 2008 ή στο SQL Server 2008 R2, εάν χρησιμοποιείται sql Profiler ή SQL Server Εκτεταμένα συμβάντα
Επίλυση
Πληροφορίες συγκεντρωτικής ενημέρωσης
Πακέτο συγκεντρωτικής ενημέρωσης 5 για SQL Server 2012 Service Pack 1 (SP1)
Η επιδιόρθωση για αυτό το πρόβλημα κυκλοφόρησε για πρώτη φορά στην Αθροιστική ενημέρωση 5. Για περισσότερες πληροφορίες σχετικά με τον τρόπο λήψης αυτού του πακέτου αθροιστικής ενημέρωσης για SQL Server 2012, κάντε κλικ στον αριθμό του άρθρου που ακολουθεί για να δείτε το άρθρο στη Γνωσιακή βάση της Microsoft:
2861107 Πακέτο αθροιστικής ενημέρωσης 5 για SQL Server 2012Note Επειδή οι εκδόσεις είναι αθροιστικές, κάθε νέα έκδοση επιδιόρθωσης περιέχει όλες τις άμεσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που περιλαμβάνονταν στην προηγούμενη έκδοση επιδιόρθωσης SQL Server 2012. Συνιστάται να εξετάσετε το ενδεχόμενο εφαρμογής της πιο πρόσφατης έκδοσης επιδιόρθωσης που περιέχει αυτήν την άμεση επιδιόρθωση. Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για προβολή του άρθρου στη Γνωσιακή Βάση της Microsoft:
2772858 Οι εκδόσεις SQL Server 2012 που κυκλοφόρησαν μετά την κυκλοφορία του Service Pack 1 SQL Server 2012
Λύση
Για να επιλύσετε αυτό το πρόβλημα, χρησιμοποιήστε μία από τις ακόλουθες μεθόδους:
-
Μην χρησιμοποιείτε sql profiler ή SQL Server εκτεταμένα συμβάντα.
-
Κάντε κλικ για να καταργήσετε την επιλογή των πλαισίων ελέγχου RPC:Starting και RPC:Completed στον ορισμό ανίχνευσης.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για πρόβλημα στα προϊόντα της Microsoft που αναφέρονται στην ενότητα "Ισχύει για".