CORRECÇÃO: Recebe uma mensagem de erro quando o MS DTC para o SQL Server 2000 reutiliza um identificador de processo do servidor (SPID) para se inscrever em uma transação distribuída

ID do artigo: 908156 - Exibir os produtos aos quais esse artigo se aplica.
Bug #: 474686 (SQL Server 8.0)
Microsoft distribui correções do Microsoft SQL Server 2000 como um arquivo para download. Como as correções são cumulativas, cada versão nova contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2000 corrigir lançamento.
Expandir tudo | Recolher tudo

Nesta página

Sumário

Este artigo descreve o seguinte sobre esta versão de hotfix:
  • Problemas corrigidos pelo pacote de hotfix
  • Os pré-requisitos para instalar o pacote de hotfix
  • Se é necessário reiniciar o computador depois de instalar o pacote de hotfix
  • Se o pacote de hotfix é substituído por qualquer outro pacote de hotfix
  • Se você deve fazer alterações no registro
  • Arquivos que estão contidos no pacote de hotfix

Sintomas

Ao coordenador de transações distribuídas (MS DTC) da Microsoft para o Microsoft SQL Server 2000 reutiliza um identificador de processo do servidor (SPID) para se inscrever em uma transação distribuída, você recebe uma mensagem de erro semelhante à seguinte:
Declaração do SQL Server: Arquivo: <"msqlxact.cpp">, linha = 1882 falha declaração = ' pss-> IsSingleThreaded () '.
Após receber essa mensagem de erro, o SQL Server registra diversas mensagens de erro que possuem o código de Erro 17883 no log de erro do SQL Server. Talvez você precise pare e reinicie o serviço do SQL Server.

Para obter uma lista de todos os lançado publicamente SQL Server 2000 Service Pack 3a hotfixes, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
810185Atualização de hotfix do SQL Server 2000 para SQL Server 2000 Service Pack 3 e 3a

Causa

Esse problema ocorre quando o SPID é usado para se inscrever em uma transação distribuída imediatamente após uma consulta paralela em execução no mesmo o SPID. Nesse caso, o estado interno do SPID está danificado pelo monitor de bloqueio interno do SQL Server ou por uma consulta a tabela master.dbo.sysprocesses quando a consulta paralela está sendo executada.

Por exemplo, a seqüência de eventos a seguir faz com que esse problema:
  1. SQL Server cria um SPID para executar uma consulta SQL ou um procedimento armazenado SQL. O plano de execução da consulta SQL ou do SQL armazenado procedimento é paralelo.
  2. O SQL Server bloqueio interno monitor reativado e executa uma verificação do estado de todos os SPIDs antes da consulta SQL ou o SQL armazenado o procedimento da etapa 1 termina.
  3. A consulta SQL ou o SQL armazenado procedimento da etapa 1 terminar, e não está sendo executado o SPID em vários segmentos paralelos. A consulta SQL ou procedimento armazenado SQL marca o estado interno do SPID como único thread. No entanto, o monitor de bloqueio interno do SQL Server não concluiu a verificação do estado de todos os SPIDs.
  4. O monitor de bloqueio interno do SQL Server termina a verificação do estado de todos os SPIDs. O monitor de bloqueio interno do SQL Server incorretamente altera o estado interno do SPID para NULL em vez de deixar o estado interno do SPID marcado como único thread.
  5. O MS DTC faz uma solicitação para o SQL Server para se inscrever em uma transação distribuída. Reutiliza esta solicitação o SPID interno danificado mesmo estruturas da etapa 4. Porque o SPID está danificado, a inscrição de transação distribuída parece estar sendo executado em um SPID que é não único segmentado.
  6. Antes do SQL Server concluir a inscrição na transação distribuída, verificações do SQL Server para verificar se o SPID é único segmento. A verificação falhar porque o estado interno do SPID está incorreto. Você receber a mensagem de erro mencionada na "Sintomas" seção.
  7. Após a verificação falhar, a solicitação do MS DTC para SQL Server é encerrada. Alguns registradores de divisão e spinlocks no recursos internos do SQL Server não pode ser lançado corretamente.
  8. Consultas futuras do SQL ou procedimentos armazenados SQL podem causar um ou mais agendadores do SQL Server pare de responder. Agendadores do SQL Server podem esperar a versão dos registradores de divisão e a spinlocks nos recursos do SQL Server internos órfãos.
  9. SQL Server pode detectar que um agendador do SQL Server não está respondendo e pode registrar mensagens de erro que têm código de Erro 17883 no log de erro do SQL Server.
  10. Após o SQL Server Agendador pára de responder, não poderá fazer logon no SQL Server. As consultas SQL que estão sendo executados também podem parar de responder. Talvez você precise interromper e reiniciar o MSSQLServer serviço.
Observação Essa seqüência de eventos requer que uma consulta paralela é seguida por uma inscrição de transação distribuída em SPID mesmo. O aplicativo cliente que executa a consulta paralela provavelmente não usa o pool de conexão. Isso ocorre porque qualquer chamada para o procedimento sp_resetconnection armazenados do pool de conexão redefine o estado interno da conexão. Redefinir o estado interno da conexão impede que esse problema.

Resolução

Informações sobre o hotfix

Um hotfix suportado está disponível no Microsoft. No entanto, esse hotfix destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico.

Se o hotfix está disponível para download, há uma seção "Download de Hotfix disponível" na parte superior neste artigo da Base de dados de Conhecimento. Se esta seção não for exibido, envie uma solicitação para suporte e atendimento ao cliente Microsoft para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para obter uma lista completa de números de telefone de suporte e Atendimento Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação O formulário "Download de Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma, é porque um hotfix não está disponível para esse idioma.

Pré-requisitos

  • Microsoft SQL Server 2000 Service Pack 4 (SP4)

    Para obter informações sobre como obter o SQL Server 2000 SP4, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    290211Como obter o SQL Server 2000 service pack mais recente

Informações sobre reinicialização

Não é necessário reiniciar o computador após aplicar esse hotfix.

Informações do registro

Não é necessário alterar o registro.

Informações sobre o arquivo de hotfix

Esse hotfix contém apenas os arquivos que são necessárias para corrigir os problemas que este artigo lista. Este hotfix pode não conter todos os arquivos que você deve ter para actualizar completamente um produto para a compilação mais recente.

A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
SQL Server 2000 de 32 bits
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Dtsui.dll2000.80.2171.01,593,34404 De novembro de 200507: 10x 86
Impprov.dll2000.80.2171.0102,40004 De novembro de 200507: 10x 86
Mssdi98.dll8.11.50523.0239,10406-Jun-200522: 46x 86
Ntwdblib.dll2000.80.2171.0290,81604 De novembro de 200507: 10x 86
Odsole70.dll2000.80.2171.069.63204 De novembro de 200507: 10x 86
Osql.exe2000.80.2039.057.34404 De novembro de 200505: 13x 86
Pfclnt80.dll2000.80.2171.0430,08004 De novembro de 200507: 10x 86
Procsyst.SQLNão aplicável552,06817-Jun-200515: 00Não aplicável
Replprov.dll2000.80.2171.0237,56804 De novembro de 200507: 10x 86
Semexec.dll2000.80.2171.0856,06404 De novembro de 200507: 10x 86
Sp4_serv_qfe.SQLNão aplicável18,81017-Jun-200515: 00Não aplicável
Spupdsvc.exe6.1.22.522,75204 De novembro de 200505: 14x 86
Sqlagent.exe2000.80.2171.0323,58404 De novembro de 200505: 27x 86
Sqldiag.exe2000.80.2171.0118,78404 De novembro de 200506: 09x 86
Sqldmo.dll2000.80.2171.04,362,24004 De novembro de 200507: 10x 86
SQLEVN70.rll2000.80.2171.045,05604 De novembro de 200507: 10Não aplicável
Sqlfth75.dll2000.80.2171.0102,40004 De novembro de 200505: 33x 86
Sqlse.rll1.1.1003.044,54427 De setembro de 200505: 23Não aplicável
Sqlservr.exe2000.80.2171.09,158,65604 De novembro de 200507: 10x 86
Sqlsort.dll2000.80.2171.0589,82404 De novembro de 200507: 10x 86
Sqlstpcustomdll.dll1.0.128.0943,10404 De novembro de 200505: 13x 86
Sqlstpcustomdll.rllNão aplicável24,57604 De novembro de 200505: 13Não aplicável
Stardds.dll2000.80.2171.0176,12804 De novembro de 200507: 10x 86
Svrnetcn.dll2000.80.2171.0110,59204 De novembro de 200507: 10x 86
Tempcatsign.CDFNão aplicável1,42904 De novembro de 200514: 57Não aplicável
Ums.dll2000.80.2171.035.32804 De novembro de 200507: 10x 86
Updatelauncher.exe5.2.3790.12888,70412 De outubro de 200500: 07x 86
Versão do SQL Server 2000 64-bit
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Impprov.dll2000.80.2171.0244,73604 De novembro de 200514: 16IA-64
Mssdi98.dll8.11.50523.0758,78404 De novembro de 200514: 16IA-64
Odsole70.dll2000.80.2171.0150,52804 De novembro de 200514: 16IA-64
Pfclnt80.dll2000.80.2171.01,187,84004 De novembro de 200514: 16IA-64
Replprov.dll2000.80.2171.0538,62404 De novembro de 200514: 16IA-64
Sqlagent.exe2000.80.2171.01,061,37604 De novembro de 200514: 16IA-64
Sqldiag.exe2000.80.2171.0334,33604 De novembro de 200514: 16IA-64
Sqldmo.dll2000.80.2171.04,362,24004 De novembro de 200514: 16x 86
SQLEVN70.rll2000.80.2171.035.32804 De novembro de 200514: 16Não aplicável
Sqlfth75.dll2000.80.2171.0246,78404 De novembro de 200514: 16IA-64
Sqlservr.exe2000.80.2171.024,921,60004 De novembro de 200514: 16IA-64
Sqlsort.dll2000.80.2171.0617,47204 De novembro de 200514: 16IA-64
Svrnetcn.dll2000.80.2171.0427,52004 De novembro de 200514: 16IA-64
Observação Devido às dependências do arquivo, o hotfix mais recente ou o recurso que contém esses arquivos também pode conter arquivos adicionais.

Como Contornar

Para contornar este problema, use um dos seguintes métodos:
  • Desative o paralelismo para a instância do SQL Server, limitando o grau de paralelismo em um grau. Para fazer isso, use o exemplo de código a seguir.
    sp_configure 'max degree of parallelism', 1
    go
    reconfigure with override
    
    Observação Se o servidor tem vários processadores e consultas de custo alto que usa regularmente paralelismo, desativar o paralelismo pode ter um efeito adverso no desempenho de consultas.
  • Elimine o uso de transações distribuídas.

    Observação Esse método não pode ser realista na maioria dos ambientes.
Você não pode usar a dica OPTION (MAXDOP 1) em relação a uma única consulta para resolver esse problema. Para contornar este problema dessa maneira, você teria que usar essa dica contra todas as consultas ad hoc e contra todos os procedimentos armazenados. Esse método não pode ser realista na maioria dos ambientes.

Situação

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

Mais Informações

Para obter mais informações sobre o esquema para nomeação para atualizações do SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
822499Novo esquema para nomeação para pacotes de atualização de software do Microsoft SQL Server
Para obter mais informações sobre a terminologia usada pela Microsoft quando a Microsoft corrige o software após ele é liberado, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software
Para obter mais informações sobre paralelismo, consulte o tópico "grau máximo de paralelismo opção" nos manuais online do SQL Server ou visite a seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa196725(SQL.80).aspx
Para obter mais informações sobre transações distribuídas, consulte o tópico "Transações distribuídas" nos manuais online do SQL Server ou visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/aa213077(SQL.80).aspx

Propriedades

ID do artigo: 908156 - Última revisão: quarta-feira, 14 de fevereiro de 2007 - Revisão: 2.4
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Workgroup Edition
Palavras-chave: 
kbmt kbautohotfix kbtshoot kbbug kbfix kbqfe kbhotfixserver KB908156 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 908156

Submeter comentários