CORRECÇÃO: Deadlocks podem ocorrer quando várias inscrições de notificação de consulta simultâneas são acionadas em objetos mesmos no SQL Server 2005 ou no SQL Server 2008

Traduções deste artigo Traduções deste artigo
ID do artigo: 975090 - Exibir os produtos aos quais esse artigo se aplica.
A Microsoft distribui correções do Microsoft SQL Server 2005 como um arquivo para download. Porque 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 SQL Server 2005 anteriores corrigir lançamento.A Microsoft distribui correções do Microsoft SQL Server 2008 como um arquivo para download. Porque 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 SQL Server 2008 anteriores corrigir lançamento.
Expandir tudo | Recolher tudo

Sintomas

Considere o seguinte cenário:
  • No Microsoft SQL Server 2005 ou no Microsoft SQL Server 2008, você configurar várias inscrições de notificação de consulta em algumas tabelas.
  • Atualizar essas tabelas.
  • As solicitações para inscrições de notificação de consulta são acionadas simultaneamente.
Nesse cenário, deadlocks podem ocorrer nas tabelas de sistema de notificação de consulta (por exemplo, uma tabela de sistema com um nome semelhante sys.query_notification_xxxxxx). Além disso, o gráfico de deadlock seguinte é registrado no arquivo de log de erro do SQL Server:
garçom id = process7f8dc48 modo = requestType U = espere,
lista garçom,
identificação do proprietário = process873ce38 modo = U,
lista de proprietário,
keylock hobtid = dbid 72057594049462272 = 5 objectname = <database>. sys.query_notification_626101271 indexname = cidx id = lock178dd6c0
modo = associatedObjectId U = 72057594049462272,
garçom id = process873ce38 modo = requestType U = espere,
lista garçom,
identificação do proprietário = process7f8dc48 modo = U,
lista de proprietário,
keylock hobtid = dbid 72057594049462272 = 5 objectname = <database>. sys.query_notification_626101271 indexname = cidx id = lock176848c0
modo = associatedObjectId U = 72057594049462272,
lista de recursos,
<query>,
inputbuf,
<query>,
quadro procname = adhoc linha = 1 sqlhandle = 0x020000009f5c4302918e8370f6d9bd71045a53f75b8056b3,
executionStack,
identificação de processo = process873ce38 taskpriority = 0 logused = 0 waitresource = KEY: waittime 5:72057594049462272 (0e0086ec58d5) = 4984 ownerId = transactionname 574444809 = CQueryScan::BeginNotifXact lasttranstarted = <Date><tempo>XDES = 0x732047f8 lockMode = U schedulerid = 7 kpid = 8068 status = spid suspenso = 133 sbid = 0 ecid = prioridade 0 = 0 transcount = 0 lastbatchstarted = <Date><tempo>lastbatchcompleted = <Date><tempo>clientapp = .NET provedor de dados SqlClient hostname = <hostname>hostpid = 1824 loginname = <loginname>isolationlevel = leitura confirmada xactid (2) = currentdb 574444808 = 5 lockTimeout = 4294967295 clientoption1 = clientoption2 671088672 = 128056,
<query>,
inputbuf,
<query>,
quadro procname = adhoc linha = 1 sqlhandle = 0x020000009f5c4302918e8370f6d9bd71045a53f75b8056b3,
executionStack,
identificação de processo = process7f8dc48 taskpriority = 0 logused = 0 waitresource = KEY: waittime 5:72057594049462272 (0d006843edc7) = 4984 ownerId = transactionname 574444769 = CQueryScan::BeginNotifXact lasttranstarted = <Date><tempo>XDES = 0x6adc9528 lockMode = U schedulerid = 5 kpid = 676 status = spid suspenso = sbid 293 = 0 ecid = prioridade 0 = 0 transcount = 0 lastbatchstarted = <Date><tempo>lastbatchcompleted = <Date><tempo>clientapp = .NET provedor de dados SqlClient hostname = <hostname>110 hostpid = 1272 loginname = <loginname>isolationlevel = leitura confirmada xactid (2) = currentdb 574444768 = 5 lockTimeout = 4294967295 clientoption1 = clientoption2 671088672 = 128056,
lista de processos,
vítima de deadlock = process873ce38,
lista de deadlock,

Causa

Por padrão, o SQL Server usa o nível de isolamento de transação READ_COMMITTED. Portanto, consultas internas do SQL Server têm potencial para executar o deadlocks. No cenário descrito na seção "Sintomas", as consultas que causam o deadlock são consultas internas.

Resolução

SQL Server 2005 Service Pack 3

Correção para esse problema foi lançada primeiro na atualização cumulativa 6 para SQL Server 2005 Service Pack 3. Para obter mais informações sobre esse pacote cumulativo de atualização, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
974648Pacote de atualização cumulativa 6 para SQL Server 2005 Service Pack 3
Observação Como as compilações são cumulativas, cada novo lançamento de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o SQL Server 2005 anteriores corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento mais recente de correção 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:
960598Compilações do SQL Server 2005 que foram lançadas após o lançamento do SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 hotfixes são criados para específicos de service packs do SQL Server. Você deve aplicar um hotfix do SQL Server 2005 Service Pack 3 para uma instalação do SQL Server 2005 Service Pack 3. Por padrão, qualquer hotfix é fornecido no service pack do SQL Server está incluído no service pack próximo do SQL Server.

A versão de lançamento do SQL Server 2008

Importante Você deve instalar essa correção se você estiver executando a versão de lançamento do SQL Server 2008.

A correção para este problema primeiro foi lançada em 8 de atualização cumulativa. Para obter mais informações sobre como obter esse pacote de atualização cumulativa para SQL Server 2008, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
975976Pacote de atualização cumulativo 8 para SQL Server 2008
Observação Como as compilações são cumulativas, cada novo lançamento de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o SQL Server 2008 anteriores corrigir lançamento. Recomendamos que você considere aplicar o lançamento mais recente de correção 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:
956909Compilações de SQL Server 2008 que foram lançadas após o lançamento do SQL Server 2008

SQL Server 2008 Service Pack 1

Importante Você deve instalar essa correção se você estiver executando o SQL Server 2008 Service Pack 1.

Primeiro, a correção para esse problema foi lançada em 5 de atualizações cumulativas para o SQL Server 2008 Service Pack 1. Para obter mais informações sobre esse pacote cumulativo de atualização, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
975977Pacote de atualizações cumulativas 5 para SQL Server 2008 Service Pack 1
Observação Como as compilações são cumulativas, cada novo lançamento de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o SQL Server 2008 anteriores corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento mais recente de correção 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:
970365Compilações de SQL Server 2008 que foram lançadas após o lançamento do SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 hotfixes são criados para específicos de service packs do SQL Server. Você deve aplicar um hotfix do SQL Server 2008 Service Pack 1 para uma instalação do SQL Server 2008 Service Pack 1. Por padrão, qualquer hotfix é fornecido no service pack do SQL Server está incluído no service pack próximo do SQL Server.

Após aplicar essa correção, o nível de isolamento será definido para Serializable quando o mecanismo de banco de dados acessa tabelas do sistema.

Situação

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

Mais Informações

Acordo com a causa desse problema, o método típico de ajuste e indexação não é possível resolver esse problema. O hotfix é usado para modificar o nível de isolamento para um nível mais alto para uma determinada parte desta transação para certificar-se de que não executam consultas problemáticas em deadlock temporariamente.

Referências

Para obter informações adicionais sobre o modelo de serviços incrementais para SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
935897Um modelo de serviços incrementais está disponível da equipe do SQL Server para fornecer hotfixes para problemas relatados
Para obter informações adicionais sobre como obter o SQL Server 2005 Service Pack 3, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
913089Como obter o service pack mais recente do SQL Server 2005
Para obter mais informações sobre os novos recursos no SQL Server 2005 Service Pack 3 (SP3) e sobre os aperfeiçoamentos no SQL Server 2005 SP3, visite o seguinte site:
http://go.microsoft.com/fwlink/?LinkId=131442
Para obter informações adicionais 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:
822499Novo esquema para nomeação dos pacotes de atualização de software Microsoft SQL Server
Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
824684Descrição da terminologia padrão usada para descrever as atualizações de software

Propriedades

ID do artigo: 975090 - Última revisão: segunda-feira, 19 de outubro de 2009 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup 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
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
Palavras-chave: 
kbmt kbexpertiseadvanced kbsurveynew kbqfe kbfix KB975090 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: 975090

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