CORREC플O: Ocorre um problema de bloqueio quando actualizar linhas de uma tabela no SQL Server 2005

Tradu寤es de Artigos Tradu寤es de Artigos
Artigo: 948445 - Ver produtos para os quais este artigo se aplica.
N. de bugs: 50002258 (correc豫o SQL)
A Microsoft distribui correc寤es Microsoft SQL Server 2005 como um ficheiro transfervel. Uma vez que as correc寤es so cumulativas, cada nova verso contm todas as correc寤es e todas as correc寤es de segurana includas com o SQL Server 2005 anterior corrigir lanamento.
Expandir tudo | Reduzir tudo

Sintomas

Quando actualizar linhas de uma tabela no SQL Server 2005, poder ocorrer um problema de bloqueio. Executar o procedimento armazenado sp_lock para mostrar os bloqueios actuais. No entanto, notar que o ID de sesso bloqueado (SPID) espera de obter um bloqueio de actualiza豫o para a mesma linha que tenha j sido concedido um bloqueio exclusivo por outra instru豫o de actualiza豫o. Este comportamento ocorre mesmo se a instru豫o de actualiza豫o estiver configurada para actualizar uma linha diferente.

Este problema poder ocorrer dos seguintes cenrios:
  • No SQL Server 2005, efectua actualiza寤es posicionadas num cursor utilizando o controlador ODBC de cliente nativo SQL numa aplica豫o. Utilize o mtodo SQLSetPos e utilize a op豫o SQL_UPDATE para efectuar actualiza寤es posicionadas. Definir o atributo de instru豫o SQL_ATTR_CONCURRENCY para SQL_CONCUR_LOCK para actualizar linhas diferentes da mesma tabela em liga寤es diferentes ao mesmo tempo.
  • Utilize o procedimento sp_cursor armazenados para actualizar linhas diferentes da mesma tabela em liga寤es diferentes ao mesmo tempo.

Causa

Este problema ocorre porque a actualiza豫o posicionada numa transac豫o executa uma verifica豫o tabela em tabelas tudo envolvidas. Este comportamento faz com que muitos bloqueios de actualiza豫o seja gerado em vrias linhas na tabela. Alm disso, SQL Server tenta adicionar um bloqueio de actualiza豫o na linha que tenha j sido concedida um bloqueio exclusivo por outra transac豫o. Por conseguinte, ocorre um problema de bloqueio.

Resolu豫o

A correc豫o para este problema foi primeiro disponibilizada na actualiza豫o cumulativa 6. Para obter mais informa寤es sobre como obter este pacote de actualiza豫o cumulativa para o SQL Server 2005 Service Pack 2, clique no nmero de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
946608Pacote de actualiza豫o cumulativa 6 para o SQL Server 2005 Service Pack 2
Nota Uma vez que as compila寤es so cumulativas, cada nova verso de correc豫o contm todas as correc寤es e todas as correc寤es de segurana includas com o SQL Server 2005 anterior corrigir lanamento. A Microsoft recomenda que considerar a aplica豫o a verso de correc豫o mais recente que contenha esta correc豫o. Para obter mais informa寤es, clique no nmero de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
937137Cria o SQL Server 2005 que foram disponibilizadas aps o lanamento do SQL Server 2005 Service Pack 2
As correc寤es Microsoft SQL Server 2005 so criadas para service packs do SQL Server especficos. Tem de aplicar uma correc豫o do SQL Server 2005 Service Pack 2 para uma instala豫o do SQL Server 2005 Service Pack 2. Por predefini豫o, qualquer correc豫o fornecida num service pack do SQL Server est includa no prximo service pack do SQL Server.

Como contornar

Para contornar este problema, utilize um dos seguintes mtodos:
  • Crie um ndice para a tabela que impede uma pesquisa da tabela.
  • Se tiver o primeiro cenrio descrito na sec豫o "Sintomas", defina o atributo instru豫o SQL_ATTR_CONCURRENCY para SQL_CONCUR_VALUES em vez de SQL_CONCUR_LOCK.
  • Se tiver o segundo cenrio descrito na sec豫o "Sintomas", utilize a instru豫o OPEN para abrir um cursor de servidor do Transact-SQL em vez de utilizar o procedimento sp_cursor armazenados.

Ponto Da Situa豫o

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

Mais Informa豫o

Para resolver o problema, Active o sinalizador de rastreamento 4117 depois de aplicar esta correc豫o.Para obter mais informa寤es sobre os ficheiros que so alterados e para obter informa寤es sobre quaisquer pr-requisitos para aplicar o pacote de actualiza豫o cumulativa que contm a correc豫o que descrita neste artigo da base de dados de conhecimento da Microsoft, clique no nmero de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
946608Pacote de actualiza豫o cumulativa 6 para o SQL Server 2005 Service Pack 2

Referncias

Para obter mais informa寤es sobre a lista de compila寤es disponveis depois de SQL Server Service Pack 2, clique no nmero de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
937137Cria o SQL Server 2005 que foram disponibilizadas aps o lanamento do SQL Server 2005 Service Pack 2
Para obter mais informa寤es sobre o modelo de assistncia incremental para o SQL Server, clique no nmero de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
935897Um modelo de assistncia incremental est disponvel a equipa do SQL Server para proporcionar correc寤es para problemas comunicados
Para obter mais informa寤es sobre como obter o SQL Server 2005 Service Pack 2, clique no nmero de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
913089Como obter o service pack mais recente para o SQL Server 2005
Para mais informa寤es sobre as novas funcionalidades e melhorias no SQL Server 2005 Service Pack 2, visite o seguinte Web site da Microsoft:
http://go.microsoft.com/fwlink/?LinkId=71711
Para obter mais informa寤es sobre o esquema de atribui豫o de nomes para as actualiza寤es do SQL Server, clique no nmero de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
822499Novo esquema de atribui豫o de nomes de ficheiros para pacotes de actualiza豫o de software do Microsoft SQL Server
Para obter mais informa寤es sobre a terminologia de actualiza豫o de software, clique no nmero de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descri豫o da terminologia padro utilizada para descrever actualiza寤es de software da Microsoft

Propriedades

Artigo: 948445 - ltima reviso: 7 de fevereiro de 2008 - Reviso: 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 2005 Server Enterprise
  • 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 automtica
IMPORTANTE: Este artigo foi traduzido por um sistema de tradu豫o automtica (tambm designado por Machine translation ou MT), no tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplica寤es (MT) e artigos traduzidos por tradutores profissionais. O objectivo simples: oferecer em Portugus a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradu豫o automtica no sempre perfeita. Esta pode conter erros de vocabulrio, sintaxe ou gramtica? erros semelhantes aos que um estrangeiro realiza ao falar em Portugus. A Microsoft no responsvel por incoerncias, erros ou estragos realizados na sequncia da utiliza豫o dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualiza寤es frequentes ao software de tradu豫o automtica (MT). Obrigado.
Clique aqui para ver a verso em Ingls deste artigo: 948445

Submeter comentrios

 

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