Ισχύει για
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Σφάλμα #: 187868 (Συντήρηση περιεχομένου)VSTS: 1340145

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

Συμπτώματα

Εξετάστε το ακόλουθο σενάριο:

  • Μπορείτε να δημιουργήσετε μια αποθηκευμένη διαδικασία που χρησιμοποιεί μια παράμετρος τιμής πίνακα (TVP) σε Microsoft SQL Server 2012.

  • Μπορείτε να χρησιμοποιήσετε SQL Profiler ή συμβάντα εκτεταμένο διακομιστή SQL για να καταγράψετε το RPC: εκκίνηση και RPC: ολοκληρώθηκε συμβάντα.

  • Μπορείτε να εκτελέσετε ένα ερώτημα που χρησιμοποιεί το TVP.

  • Το χρονικό όριο του ερωτήματος.

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

System.Data.SqlClient.SqlException (0x80131904): Λήξη χρονικού ορίου. Την περίοδο χρονικού ορίου παρήλθε πριν τη ολοκλήρωση της λειτουργίας ή ο διακομιστής δεν ανταποκρίνεται.στο System.Data.SqlClient.SqlInternalConnection.OnError (SqlException εξαίρεση, Boolean breakConnection)σε System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()στο System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, σφάλμα UInt32)στο System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult, TdsParserStateObject stateObj)σε System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()σε System.Data.SqlClient.TdsParserStateObject.ReadByte()στο System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)στο System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, resetOptionsString συμβολοσειρά)στο System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean ασύγχρονη)στο System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, μέθοδος συμβολοσειρά, DbAsyncResult αποτέλεσμα)στο System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult αποτέλεσμα, methodName συμβολοσειρά, Boolean sendToPipe)σε System.Data.SqlClient.SqlCommand.ExecuteNonQuery()στο TVPApp.Program.Main (συμβολοσειρά args [])

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

< Ημερομηνία >< ώρα > Χρήση διακομιστή 'dbghelp.dll' έκδοση '4.0.5'< Ημερομηνία >< ώρα > διακομιστής *** δεν είναι δυνατή η λήψη περιβάλλοντος νήματος για spid #<Date><Time> Server * *******************************************************************************< Ημερομηνία >< ώρα > διακομιστή *< Ημερομηνία >< ώρα > διακομιστή * ένδειξης ΣΦΑΛΜΆΤΩΝ ΣΤΟΊΒΑΣ ΈΝΑΡΞΗΣ:< Ημερομηνία >< ώρα > διακομιστή * < ημερομηνία >< ώρα > spid #< Ημερομηνία >< ώρα > διακομιστή *< Ημερομηνία >< ώρα > διακομιστή * χρονοδιάγραμμα μη δώσουν< Ημερομηνία >< ώρα > διακομιστή *<Date><Time> Server * *******************************************************************************< Ημερομηνία >< ώρα > υπογραφή στοίβας διακομιστή για την ένδειξη σφαλμάτων είναι 0x000000000000002C< Ημερομηνία >< εξωτερικό διακομιστή ώρας > Επιστροφή διεργασία ένδειξης σφαλμάτων κώδικα 0x20000001.Διαδικασία εξωτερικής ένδειξης επέστρεψε χωρίς σφάλματα.< Ημερομηνία >< ώρα > διεργασία διακομιστή 0:0:0 (0x1670) εργαζόμενος 0x0000000004EDE160 φαίνεται να είναι μη δώσουν στο χρονοδιάγραμμα 5. Ώρα δημιουργίας του νήματος: 13014210386757. Χρησιμοποιείται περίπου νήμα CPU: πυρήνα 0 ms, Δις χρήστη 70106 διαδικασία χρήσης 16%. 77% αδράνειας συστήματος. Διάστημα: 70140 ms.< Ημερομηνία >< ώρα > διεργασία διακομιστή 0:0:0 (0x1670) εργαζόμενος 0x0000000004EDE160 φαίνεται να είναι μη δώσουν στο χρονοδιάγραμμα 5. Ώρα δημιουργίας του νήματος:

Αιτία

Αυτό το ζήτημα παρουσιάζεται εξαιτίας ενός σφάλματος στο μηχανισμό βάσης δεδομένων του SQL Server 2012. Στις στήλες κειμένου του TVP υλοποιούνται καθώς εισάγετε συμβολοσειρές ή buffers και αύξηση του αριθμού των γραμμών αυξάνεται ο αριθμός των buffer. Ωστόσο, η διαδικασία που απελευθερώνει buffers είναι χρονοβόρα. Επομένως, δημιουργείται ένα σφάλμα χρονοδιαγράμματος μη δώσουν όταν απελευθερώσετε και συρρίκνωση λειτουργίες προκύψει.Σημείωση Ένα παρόμοιο θέμα περιγράφεται στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft. Ωστόσο, το πακέτο αθροιστική ενημερωμένη έκδοση που περιγράφεται στο άρθρο δεν είναι για ένα ζήτημα του χρονικού ορίου ερωτήματος.

2520808 ΕΠΙΔΙΌΡΘΩΣΗ: Σφάλμα χρονοδιαγράμματος μη δώσουν κατά την εκτέλεση ενός ερωτήματος που χρησιμοποιεί ένα TVP στον SQL Server 2008 ή στον SQL Server 2008 R2, αν χρησιμοποιείται SQL Profiler ή SQL Server Extended συμβάντα

Προτεινόμενη αντιμετώπιση

Πληροφορίες αθροιστικής ενημερωμένης έκδοσης

Πακέτο αθροιστικών ενημερώσεων 5 για το SQL Server 2012 Service Pack 1 (SP1)

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

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

2772858 το 2012 διακομιστή SQL δημιουργεί που κυκλοφόρησαν μετά την κυκλοφορία του SQL Server 2012 Service Pack 1

Εναλλακτικός τρόπος αντιμετώπισης

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

  • Μην χρησιμοποιείτε SQL Profiler ή συμβάντα εκτεταμένο διακομιστή SQL.

  • Κάντε κλικ για να καταργήσετε την επιλογή του RPC: εκκίνηση και RPC: ολοκληρώθηκε πλαίσια ελέγχου στον ορισμό της ανίχνευσης.

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

Αυτή η ενημέρωση κώδικα δεν ισχύει για SQL Server 2008 ή SQL Server 2008 R2 όταν δημοσιευτεί αυτό KB. Εάν όλοι οι χρήστες που παρουσιάζεται το ίδιο ζήτημα στον SQL Server 2008 ή SQL Server 2008 R2, ακόμα και όταν οι χρήστες εφαρμόσουν το πακέτο που περιγράφεται στο ακόλουθο άρθρο, επικύρωση, εάν υπάρχει ένα χρονικό όριο ερωτήματος και να προσδιορίσετε αν το χρονικό όριο είναι δυνατόν να επιλυθεί. Διαφορετικά, υποβάλετε μια αίτηση για να εφαρμόσετε αυτήν την ενημέρωση κώδικα SQL Server 2008 ή SQL Server 2008 R2.

2520808 ΕΠΙΔΙΌΡΘΩΣΗ: Σφάλμα χρονοδιαγράμματος μη δώσουν κατά την εκτέλεση ενός ερωτήματος που χρησιμοποιεί ένα TVP στον SQL Server 2008 ή στον SQL Server 2008 R2, αν χρησιμοποιείται SQL Profiler ή SQL Server Extended συμβάντα

Πληροφορίες στοίβας κλήσεων

sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FLookup+0x29sqlmin!CCheckReadersAndWriters::Release+0x69sqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x14sqllang!CTraceTvpData::`scalar deleting destructor'+0x1esqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70sqllang!CRPCExecEnv::~CRPCExecEnv+0x2absqllang!CRPCExecEnv::`scalar deleting destructor'+0x14sqllang!process_request+0x10b1sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x299sqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0xdntdll!RtlUserThreadStart+0x1d  
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfbsqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x11sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55sqllang!CRpcTraceHelper::TracePostExec+0x1bfsqllang!CRPCExecEnv::OnExecFinish+0xaasqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2sqllang!process_request+0x764sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x29asqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0x1antdll!RtlUserThreadStart+0x1d 

Κατάσταση

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

Author: jannawWriter: v-yipliΤεχνικές αναθεωρητής: pradm; jannaw; hozhanEditor: v-mordew

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.