A Microsoft distribui correções do Microsoft SQL Server 2012 num ficheiro transferível. Uma vez que as correções são cumulativas, cada nova versão contém todas as correções e todas as atualizações de segurança incluídas na versão de atualização do SQL Server de 2012 anterior.
Sintomas
Considere o seguinte cenário:
-
Cria um procedimento armazenado que utiliza um parâmetro de valor de tabela (TVP) no Microsoft SQL Server 2012.
-
Utilize o SQL Profiler ou SQL Server Eventos Expandidos para capturar os eventos RPC:Starting e RPC:Completed.
-
Executa uma consulta que utiliza a TVP.
-
A consulta excede o limite de tempo.
Neste cenário, ocorre um erro de agendador não resultante e as consultas que estão em execução no mesmo agendador são executadas lentamente. Além disso, é gerado um ficheiro de mini-informação de falha de sistema na pasta de registo SQL Server.Quando este problema ocorre, recebe uma mensagem de erro semelhante à seguinte:
System.Data.SqlClient.SqlException (0x80131904): o tempo limite expirou. O período de tempo limite decorrido antes da conclusão da operação ou o servidor não está a responder.em System.Data.SqlClient.SqlInternalConnection.OnError(exceção SqlException, Boolean breakConnection)em System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()em System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObjj, Erro UInt32)em System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObject stateObj)em System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()em System.Data.SqlClient.TdsParserStateObject.ReadByte()em System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObject stateObj)em System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)em System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)em System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)em System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)em System.Data.SqlClient.SqlCommand.ExecuteNonQuery()em TVPApp.Program.Main(String[] args)
O erro do agendador que não está a produzir, juntamente com uma mensagem de erro semelhante ao seguinte, é registado no registo de erros SQL Server:
<Data><Hora> Servidor com a versão "dbghelp.dll" "4.0.5"<Data><Hora> Servidor ***Não é possível obter o contexto de thread para o Servidor> de Data><Data e Hora de spi<d # *******************************************************************************><2 ******************************************************************************* ******************************************************************************* Data><><8 Hora> Servidor *><6 Data><Hora> Servidor * INICIAR CAPTURA DA PILHA:><0 Data><Hora> Servidor * data <data><hora> spid #><8 Data><Hora> Servidor *><2 Data><Hora> Servidor * Scheduler><6 Data><Hora> Servidor *<Data><Hora> Servidor * ******************************************************************************* Data<Data><Hora> a Assinatura da Pilha de Servidor para a captura é 0x000000000000002C data<data><hora> processo de captura externa do servidor devolve código 0x20000001.O processo de informação de falha de sistema externo não devolveu erros.<Data><Hora> Processo do Servidor 0:0:0 (0x1670) 0x0000000004EDE160 de Trabalho parece não produzir no Scheduler 5. Hora de criação do thread: 13014210386757. CPU de Thread De Aproximação Utilizada: kernel 0 ms, utilizador 70106 ms. Utilização do Processo 16%. Sistema Inativo 77%. Intervalo: 70140 ms.<Data><Hora> Processo do Servidor 0:0:0 (0x1670) 0x0000000004EDE160 de Trabalho parece não produzir no Scheduler 5. Hora de criação do thread:
Causa
Este problema ocorre devido a um erro no Motor de Base de Dados SQL Server 2012. As colunas de texto na TVP são implementadas como cadeias de inserção ou memória intermédia e o aumento do número de linhas aumenta o número de memórias intermédias. No entanto, o processo que liberta memórias intermédias é demorado. Por conseguinte, é gerado um erro de agendador não resultante quando ocorrem operações de versão e redução. Nota Foi resolvido um problema semelhante no seguinte artigo da Base de Dados de Conhecimento Microsoft. No entanto, o pacote de atualização cumulativa descrito no artigo não se destina a um problema de tempo limite da consulta.
2520808 CORREÇÃO: erro de agendador não resultante ao executar uma consulta que utiliza uma TVP no SQL Server 2008 ou no SQL Server 2008 R2 se for utilizado o SQL Profiler ou SQL Server Extended Events
Resolução
Informações sobre a atualização cumulativa
Pacote de atualização cumulativa 5 para SQL Server Service Pack 1 (SP1) de 2012
A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 5. Para obter mais informações sobre como obter este pacote de atualização cumulativa para o SQL Server 2012, clique no seguinte número de artigo para ver o artigo na Base de Dados de Conhecimento Microsoft:
2861107 Pacote de atualização cumulativa 5 para SQL Server 2012Note Uma vez que as compilações são cumulativas, cada nova versão de correção contém todas as correções e todas as correções de segurança incluídas na versão de correção anterior SQL Server 2012. Recomendamos que considere aplicar a versão de correção mais recente que contém esta correção. Para obter mais informações, clique no número abaixo para ler os artigos na Base de Dados de Conhecimento Microsoft:
2772858 As compilações SQL Server 2012 que foram lançadas após SQL Server service pack 1 de 2012 foram lançadas
Solução alternativa
Como solução alternativa para esse problema, use um dos seguintes métodos:
-
Não utilize o SQL Profiler nem SQL Server Eventos Expandidos.
-
Clique para desmarcar as caixas RPC:Starting e RPC:Completed marcar na definição de rastreio.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".