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

BUGS #: do 187868 (Manutenção do conteúdo)VSTS: 1340145

A Microsoft distribui correcções de 2012 do Microsoft SQL Server num só ficheiro transferível. Uma vez que as correcções são cumulativas, cada nova versão inclui todas as correcções e todas as actualizações de segurança que foram incluídas com o anterior servidor de SQL 2012 lançamento da actualização.

Sintomas

Considere o seguinte cenário:

  • Criar um procedimento armazenado que utiliza um parâmetro tabelares (TVP) no Microsoft SQL Server 2012.

  • Utilizar o SQL Profiler ou expandido eventos do servidor de SQL para capturar o RPC: iniciar o e RPC: concluída eventos.

  • Executar uma consulta que utiliza o TVP.

  • A consulta o tempo limite.

Neste cenário, ocorre um erro de programador não cedente e consultas que estão em execução no programador de mesmo executado lentamente. Além disso, é gerado um ficheiro de mini cópia na pasta de registo do SQL Server.Quando este problema ocorre, recebe uma mensagem de erro semelhante à seguinte:

System.Data.SqlClient.SqlException (0x80131904): Tempo limite expirou. O tempo limite decorreu antes da conclusão da operação ou o servidor não está a responder.em System.Data.SqlClient.SqlInternalConnection.OnError (excepção de SqlException, Boolean breakConnection)em System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()em System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, erro UInt32)em System.Data.SqlClient.TdsParserStateObject.ReadSni (asyncResult de DbAsyncResult, TdsParserStateObject stateObj)em System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()em System.Data.SqlClient.TdsParserStateObject.ReadByte()em System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader sequência de dados, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)em System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, resetOptionsString de cadeia)em System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, assíncrona booleana)em System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, método de cadeia, o resultado de DbAsyncResult)em System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (o resultado de DbAsyncResult, String methodName, Boolean sendToPipe)em System.Data.SqlClient.SqlCommand.ExecuteNonQuery()em TVPApp.Program.Main (cadeia [] args)

O erro de programador não cedente juntamente com uma mensagem de erro semelhante à seguinte é registado no registo de erros do SQL Server:

< Data >< hora > versão de servidor utilizando 'dbghelp. dll' '4.0.5'< Data >< hora > Server * * * não é possível obter o contexto do thread para spid #<Date><Time> Server * *******************************************************************************Servidor de hora > de < data >< *< Data >< hora > Server * despejo simplificado da pilha de início:Servidor < data >< hora > * < data >< hora > spid #Servidor de hora > de < data >< *< Data >< hora > Server * Programador de não cedenteServidor de hora > de < data >< *<Date><Time> Server * *******************************************************************************< Data >< hora > assinatura da pilha de servidor para a informação de estado é 0x000000000000002CCódigo de < data >< externo de servidor de hora > devolução de processo de informação 0x20000001.Processo de informação de sistema externo devolveu sem erros.Processo do servidor < data >< hora > 0:0:0 (0x1670) 0x0000000004EDE160 de trabalho parece estar não cedente no programador de 5. Hora de criação do thread: 13014210386757. Cerca de Thread da CPU utilizados: kernel 0 ms, Sra. de utilizador 70106 a utilização do processo de 16%. Sistema inactivo 77%. Intervalo: ms 70140.Processo do servidor < data >< hora > 0:0:0 (0x1670) 0x0000000004EDE160 de trabalho parece estar não cedente no programador de 5. Hora de criação do thread:

Causa

Este problema ocorre devido a um erro no motor de base de dados do SQL Server 2012. As colunas de texto a TVP são implementadas como inserir cadeias ou memórias intermédias e um aumento do número de linhas aumenta o número de memórias intermédias. No entanto, o processo que disponibiliza memórias intermédias é uma tarefa demorado. Por conseguinte, é gerado um erro de programador não cedente quando edição e encolher operações ocorrem.Nota Um problema semelhante foi corrigido no seguinte artigo da base de dados de conhecimento da Microsoft. No entanto, o pacote de actualização cumulativa descrita no artigo não é para um problema de limite de tempo de consulta.

CORRIGIR 2520808 : erro de programador não cedente quando executa uma consulta que utiliza um TVP no SQL Server 2008 ou no SQL Server 2008 R2, se for utilizados o SQL Profiler ou expandido eventos do servidor SQL

Resolução

Informações de actualização cumulativa

Pacote de actualização cumulativa 5 para o SQL Server 2012 Service Pack 1 (SP1)

A correcção para este problema foi primeiro disponibilizada em 5 de actualização cumulativa. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2012, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:

2861107 cumulativo pacote 5 de actualizações do SQL Server 2012Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o anterior servidor de SQL 2012. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Base de Dados de Conhecimento Microsoft

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

Solução alternativa

Para contornar este problema, utilize um dos seguintes métodos:

  • Não utilize o SQL Profiler ou expandido eventos do servidor SQL.

  • Clique para desmarcar a RPC: iniciar o e RPC: concluída caixas de verificação na definição de rastreio.

Mais informações

Esta correcção não é aplicável para o SQL Server 2008 ou SQL Server 2008 R2 quando este artigo da BDC é publicado. Se todos os utilizadores ocorre o mesmo problema no SQL Server 2008 ou SQL Server 2008 R2, mesmo depois dos utilizadores apliquem o pacote que é descrito no seguinte artigo, validar se existir um limite de tempo de consulta e determine se o limite de tempo pode ser resolvido. Caso contrário, submeta um pedido para aplicar esta correcção de SQL Server 2008 ou SQL Server 2008 R2.

CORRIGIR 2520808 : erro de programador não cedente quando executa uma consulta que utiliza um TVP no SQL Server 2008 ou no SQL Server 2008 R2, se for utilizados o SQL Profiler ou expandido eventos do servidor SQL

Informações de pilha de chamadas

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 

Estado

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secçã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 subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.