Aplica-se a
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

BUG n º: 187868 (Manutenção do conteúdo)VSTS: 1340145

A Microsoft distribui correções do Microsoft SQL Server 2012 em um arquivo para download. Como as correções são cumulativas, cada versão nova contém todos os hotfixes e todas as atualizações de segurança que foram incluídas com o anterior de SQL Server 2012 lançamento da atualização.

Sintomas

Considere o seguinte cenário:

  • Criar um procedimento armazenado que utiliza um parâmetro com valor de tabela (TVP) no Microsoft SQL Server 2012.

  • Use o SQL Profiler ou SQL Server Extended Events para capturar o RPC: iniciando e RPC: concluída eventos.

  • Executar uma consulta que usa a TVP.

  • Tempo limite da consulta.

Nesse cenário, ocorrerá um erro de agendador não produzindo e consultas que estão sendo executados no Agendador mesmo lento. Além disso, um arquivo de despejo simplificado é gerado na pasta de log do SQL Server.Quando esse problema ocorre, você recebe uma mensagem de erro semelhante à seguinte:

System.Data.SqlClient.SqlException (0x80131904): Tempo limite esgotado. O tempo limite esgotou antes da conclusão da operação ou o servidor não está respondendo.no System.Data.SqlClient.SqlInternalConnection.OnError (exceção SqlException, Boolean breakConnection)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()no System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, erro UInt32)no System.Data.SqlClient.TdsParserStateObject.ReadSni (asyncResult DbAsyncResult, TdsParserStateObject stateObj)em System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()em System.Data.SqlClient.TdsParserStateObject.ReadByte()no System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, cmdHandler de SqlCommand, SqlDataReader fluxo de dados, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)no System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)no System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream Boolean, Boolean async)no System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream Boolean, método de cadeias de caracteres, DbAsyncResult resultado)no System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult resultado, methodName String, Boolean sendToPipe)em System.Data.SqlClient.SqlCommand.ExecuteNonQuery()no TVPApp.Program.Main (String [] args)

O erro de agendador não respondendo com uma mensagem de erro semelhante à seguinte é registrado no log de erros do SQL Server:

< Data >< hora > Server usando 'dbghelp. dll' versão '4.0.5'< Data >< hora > Server * * * não é possível obter o contexto do thread para spid #<Date><Time> Server * *******************************************************************************< Data >< hora > Server *Servidor de hora > < data >< * despejo de pilha inicial:Servidor < data >< hora > * < data >< hora > spid #< Data >< hora > Server *Servidor de hora > < data >< * Agendador não respondendo< Data >< hora > Server *<Date><Time> Server * *******************************************************************************Assinatura de pilha de servidor < data >< hora > para o despejo é 0x000000000000002CCódigo de retorno de processo de despejo tempo > servidor externo < data >< 0x20000001.Processo de despejo externo retornou sem erros.Processo de servidor < data >< hora > 0:0:0 (0x1670) 0x0000000004EDE160 de trabalho parece estar não respondendo no Agendador de 5. Hora de criação do thread: 13014210386757. Aproximadamente Thread da CPU usado: kernel ms 0, MS. o usuário 70106 processo de utilização de 16%. 77% ocioso do sistema. Intervalo: 70140 ms.Processo de servidor < data >< hora > 0:0:0 (0x1670) 0x0000000004EDE160 de trabalho parece estar não respondendo no Agendador de 5. Hora de criação do segmento:

Causa

Esse problema ocorre devido a um erro no mecanismo de banco de dados do SQL Server 2012. As colunas de texto do TVP são implementadas como inserir sequências de caracteres ou buffers e um aumento no número de linhas aumenta o número de buffers. No entanto, o processo que libera buffers é demorado. Portanto, será gerado um erro de agendador não respondendo ao liberar e reduzir as operações ocorrem.Observação: Um problema semelhante foi abordado no seguinte artigo da base de Conhecimento Microsoft. No entanto, o pacote de atualização cumulativa descrito no artigo não é um problema de tempo limite de consulta.

Corrigir 2520808 : erro de agendador não produzindo quando você executa uma consulta que usa um TVP no SQL Server 2008 ou no SQL Server 2008 R2 se for usado o SQL Profiler ou SQL Server Extended Events

Resolução

Informações da atualização cumulativa

Pacote de atualizações cumulativas 5 para SQL Server 2012 Service Pack 1 (SP1)

A correção para esse problema foi lançada na Atualização Cumulativa 5 (Cumulative Update 5). Para obter mais informações sobre como obter esse pacote de atualização cumulativa para SQL Server 2012, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:

5 pacote de atualização do 2861107 cumulativo para o SQL Server 2012Observação: Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior de SQL Server 2012 corrigir lançamento. Recomendamos que você considere aplicar o lançamento mais recente de correção que contém esse hotfix. Para obter mais informações, clique no número de artigo a seguir para visualizar o artigo na Base de Dados de Conhecimento da Microsoft:

2772858 o SQL Server 2012 compilações disponibilizadas após o lançamento do Service Pack 1 do SQL Server 2012

Solução alternativa

Para contornar esse problema, use um dos seguintes métodos:

  • Não use o SQL Profiler ou SQL Server Extended Events.

  • Clique para limpar a RPC: iniciando e RPC: concluída caixas de seleção na definição de rastreamento.

Mais informações

Essa correção não se aplica ao SQL Server 2008 ou SQL Server 2008 R2 quando este KB é publicado. Se qualquer usuário tiver o mesmo problema no SQL Server 2008 ou SQL Server 2008 R2 mesmo depois que os usuários apliquem o pacote que é descrito no seguinte artigo, validar se um tempo limite de consulta e determinar se o tempo limite pode ser resolvido. Caso contrário, envie uma solicitação para aplicar esta correção para o SQL Server 2008 ou SQL Server 2008 R2.

Corrigir 2520808 : erro de agendador não produzindo quando você executa uma consulta que usa um TVP no SQL Server 2008 ou no SQL Server 2008 R2 se for usado o SQL Profiler ou SQL Server Extended Events

Informações de pilha de chamada

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 

Status

A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".

Author: jannawWriter: v-yipliRevisor técnico: pradm; jannaw; hozhanEditor: v-mordew

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.