Iniciar sessão com a Microsoft
Iniciar sessão ou criar uma conta.
Olá,
Selecione uma conta diferente.
Tem várias contas
Selecione a conta com a qual pretende iniciar sessão.

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 cedente
Servidor de hora > de < data >< *
<Date><Time> Server * *******************************************************************************
< Data >< hora > assinatura da pilha de servidor para a informação de estado é 0x000000000000002C
Có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+0x69
sqlmin!CMainIlb::{dtor}+0x3d
sqlmin!CMainIlb::`scalar deleting destructor'+0x3d
sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13
sqlmin!CMainIlb::Release+0xf0
sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80
sqllang!CTraceTvpData::{dtor}+0x14
sqllang!CTraceTvpData::`scalar deleting destructor'+0x1e
sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33
sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70
sqllang!CRPCExecEnv::~CRPCExecEnv+0x2ab
sqllang!CRPCExecEnv::`scalar deleting destructor'+0x14
sqllang!process_request+0x10b1
sqllang!process_commands+0x51c
sqldk!SOS_Task::Param::Execute+0x21e
sqldk!SOS_Scheduler::RunTask+0xa8
sqldk!SOS_Scheduler::ProcessTasks+0x299
sqldk!SchedulerManager::WorkerEntryPoint+0x261
sqldk!SystemThread::RunWorker+0x8f
sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8
sqldk!SchedulerManager::ThreadEntryPoint+0x236
kernel32!BaseThreadInitThunk+0xd
ntdll!RtlUserThreadStart+0x1d
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfb
sqlmin!CMainIlb::{dtor}+0x3d
sqlmin!CMainIlb::`scalar deleting destructor'+0x3d
sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13
sqlmin!CMainIlb::Release+0xf0
sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80
sqllang!CTraceTvpData::{dtor}+0x11
sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55
sqllang!CRpcTraceHelper::TracePostExec+0x1bf
sqllang!CRPCExecEnv::OnExecFinish+0xaa
sqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2
sqllang!process_request+0x764
sqllang!process_commands+0x51c
sqldk!SOS_Task::Param::Execute+0x21e
sqldk!SOS_Scheduler::RunTask+0xa8
sqldk!SOS_Scheduler::ProcessTasks+0x29a
sqldk!SchedulerManager::WorkerEntryPoint+0x261
sqldk!SystemThread::RunWorker+0x8f
sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8
sqldk!SchedulerManager::ThreadEntryPoint+0x236
kernel32!BaseThreadInitThunk+0x1a
ntdll!RtlUserThreadStart+0x1d

Estado

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Author: jannaw
Writer: v-yipli
Revisor técnico: pradm; jannaw; hozhan
Editor: 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.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.

Estas informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?
Ao selecionar submeter, o seu feedback será utilizado para melhorar os produtos e serviços da Microsoft. O seu administrador de TI poderá recolher estes dados. Declaração de Privacidade.

Obrigado pelo seu feedback!

×