Применяется к
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Номер ошибки: 187868 (Content Maintenance)VSTS: 1340145

Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2012 в один загружаемый файл. Так как исправления являются накопительными, каждый выпуск содержит все исправления и все исправления безопасности, входившие в состав предыдущих 2012 SQL Server выпуска обновления.

Симптомы

Рассмотрим следующий сценарий:

  • Создайте хранимую процедуру, которая использует параметр табличное (TVP) в Microsoft SQL Server 2012.

  • С помощью профилировщика SQL или расширенных событий SQL Server запись RPC: запуск и RPC: завершена события.

  • Запустите запрос, который использует TVP.

  • Время ожидания запроса.

В этом случае выдается ошибка невыполненных планировщика и запросы, которые выполняются на тот же планировщик работать медленно. Кроме того мини-дамп файл создается в папке журнала SQL Server.При возникновении этой проблемы появляется сообщение об ошибке, подобное приведенному ниже:

System.Data.SqlClient.SqlException (0x80131904): Время ожидания истекло. Время ожидания истекло до завершения операции или сервер не отвечает.в System.Data.SqlClient.SqlInternalConnection.OnError (исключение SqlException, логическое breakConnection)в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()в System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, ошибка UInt32)в System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult, stateObj, TdsParserStateObject)в System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()в System.Data.SqlClient.TdsParserStateObject.ReadByte()в System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, преобразование SqlDataReader, BulkCopySimpleResultSet bulkCopyHandler, stateObj, TdsParserStateObject)в System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, resetOptionsString строка)в System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream типа Boolean, логическое async)в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream типа Boolean, строки метод, результат DbAsyncResult)в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult результат, имя_метода строка, логическое sendToPipe)в System.Data.SqlClient.SqlCommand.ExecuteNonQuery()в TVPApp.Program.Main (String [] 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. Используется около поток ЦП: ядра 0 мс, г-жа пользователя 70106 процесс использования 16%. 77% Бездействие системы. Интервал: 70140 мс.Процесс сервера < Дата >< время > 0:0:0 (0x1670) работника 0x0000000004EDE160 кажется невыполненных планировщика 5. Время создания потока:

Причина

Эта проблема возникает из-за ошибки в ядре СУБД SQL Server 2012. Текстовые столбцы TVP, реализуются в качестве вставки строк или буферов и увеличение числа строк увеличивается количество буферов. Тем не менее процесс, который освобождает буферы занимает много времени. Таким образом, не давая планировщик ошибка при выпуске и сжатие операций происходят.Примечание. Как проблема была устранена в следующей статье базы знаний Майкрософт. Однако в накопительный пакет обновления, описанного в статье не для ошибки времени ожидания запроса.

ИСПРАВИТЬ 2520808 : ошибка планировщика невыполненных при выполнении запроса, который использует TVP в SQL Server 2008 или SQL Server 2008 R2 при использовании профилировщика SQL или расширенных событий SQL Server

Решение

Информация о накопительном пакете обновления

Накопительный пакет обновления 5 для SQL Server 2012 Пакет обновления 1 (SP1)

Исправление этой уязвимости первого выпуска накопительного обновления 5. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2012, щелкните следующий номер статьи базы знаний Майкрософт:

2861107 накопительного обновления 5 для SQL Server 2012Примечание. Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих 2012 SQL Server исправления выпуска. Мы рекомендуем рассмотреть применение последнего выпуска исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:

2772858 SQL Server 2012 выполняется построение, выпущенных после выпуска SQL Server 2012 Пакет обновления 1

Временное решение

Чтобы обойти эту проблему, воспользуйтесь одним из следующих методов:

  • Не используйте SQL Profiler или расширенными событиями SQL Server.

  • Снимите флажок RPC: запуск и RPC: завершена флажки в определении трассировки.

Дополнительные сведения

Это исправление не применяется к SQL Server 2008 или SQL Server 2008 R2 при публикации эту статью. Если все пользователи сталкиваются с этой проблеме в SQL Server 2008 или SQL Server 2008 R2 даже после установки пакета, как описано в следующей статье, проверить в случае тайм-аута запроса и определить, можно ли разрешить тайм-аута. В противном случае отправьте запрос для исправления для SQL Server 2008 или SQL Server 2008 R2.

ИСПРАВИТЬ 2520808 : ошибка планировщика невыполненных при выполнении запроса, который использует TVP в SQL Server 2008 или SQL Server 2008 R2 при использовании профилировщика SQL или расширенных событий SQL Server

Сведения о стеке вызова

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 

Статус

Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".

Author: jannawWriter: v-yipliТехнический редактор: pradm; jannaw; hozhanEditor: v-mordew

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.