CORRECÇÃO: Um bloqueio ocorre quando você atualizar linhas em uma tabela no SQL Server 2005

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

Sintomas

Quando você atualiza linhas em uma tabela no SQL Server 2005, poderá ocorrer um problema de bloqueio. Executar o procedimento sp_lock armazenados para mostrar os bloqueios atuais. No entanto, você observa que as identificações de sessão bloqueados (SPIDs) estão aguardando para obter um bloqueio de atualização para a mesma linha que já recebeu um bloqueio exclusivo por outra instrução de atualização. Esse comportamento ocorre mesmo se a instrução de atualização é configurada para atualizar uma linha diferente.

Esse problema pode ocorrer em uma das seguintes situações:
  • No SQL Server 2005, você pode executar atualizações posicionadas em um cursor, usando o driver ODBC do SQL Native Client em um aplicativo. Você use o método SQLSetPos e use a opção SQL_UPDATE para executar as atualizações posicionadas. Defina o atributo de declaração SQL_ATTR_CONCURRENCY como SQL_CONCUR_LOCK para atualizar linhas diferentes da mesma tabela em conexões diferentes ao mesmo tempo.
  • Você usar o procedimento sp_cursor armazenados para atualizar linhas diferentes da mesma tabela em conexões diferentes ao mesmo tempo.

Causa

Esse problema ocorre porque a atualização posicionada em uma transação executa uma verificação de tabela em tabelas todos os envolvidos. Esse comportamento faz com que muitos bloqueios de atualização a ser gerado em várias linhas na tabela. Além disso, o SQL Server tenta adicionar um bloqueio de atualização na linha que já recebeu um bloqueio exclusivo por outra transação. Portanto, ocorre um problema de bloqueio.

Resolução

A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 6. Para obter mais informações sobre como obter esse pacote de atualizações cumulativas para o SQL Server 2005 Service Pack 2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
946608Pacote de atualizações cumulativas 6 para SQL Server 2005 Service Pack 2
Observaçã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 foram incluídas com o anterior SQL Server 2005 corrigir lançamento. A Microsoft recomenda que você considere a aplicação a versão de correção mais recente que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
937137Compilações do SQL Server 2005 lançados após o SQL Server 2005 Service Pack 2 foi lançado
Os hotfixes do Microsoft SQL Server 2005 são criados para service packs do SQL Server específicos. Você deve aplicar um hotfix do SQL Server 2005 Service Pack 2 para uma instalação do SQL Server 2005 Service Pack 2. Por padrão, qualquer hotfix fornecidas em um SQL Server service pack está incluído no service pack seguinte do SQL Server.

Como Contornar

Para contornar este problema, use um dos seguintes métodos:
  • Crie um índice para a tabela que impede que uma verificação de tabela.
  • Se você tiver o primeiro cenário descrito na seção "Sintomas", defina o atributo instrução SQL_ATTR_CONCURRENCY para SQL_CONCUR_VALUES em vez de SQL_CONCUR_LOCK.
  • Se você tiver o segundo cenário descrito na seção "Sintomas", use a instrução OPEN para abrir um cursor de servidor do Transact-SQL em vez de usar o procedimento sp_cursor armazenados.

Situação

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

Mais Informações

Para resolver o problema, ative o sinalizador de rastreamento 4117 após aplicar esse hotfix.Para mais informações sobre quais arquivos são alterados e para obter informações sobre quaisquer pré-requisitos para aplicar o pacote de atualização cumulativa que contém o hotfix descrito neste artigo, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
946608Pacote de atualizações cumulativas 6 para SQL Server 2005 Service Pack 2

Referências

Para obter mais informações sobre a lista de compilações disponibilizadas após o SQL Server Service Pack 2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
937137Compilações do SQL Server 2005 lançados após o SQL Server 2005 Service Pack 2 foi lançado
Para obter mais informações sobre o modelo incremental de serviços para o SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
935897Há um modelo incremental de serviços da equipe do SQL Server para fornecer hotfixes para problemas relatados
Para obter mais informações sobre como obter o SQL Server 2005 Service Pack 2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
913089Como obter o service pack mais recente para o SQL Server 2005
Para obter mais informações sobre os novos recursos e os aprimoramentos no SQL Server 2005 Service Pack 2, visite o seguinte site:
http://go.microsoft.com/fwlink/?LinkId=71711
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 terminologia de atualização de software, 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

Propriedades

ID do artigo: 948445 - Última revisão: quinta-feira, 7 de fevereiro de 2008 - Revisão: 1.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
Palavras-chave: 
kbmt kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbsql2005engine KB948445 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: 948445

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com