Você está offline; aguardando reconexão

Erro: 1205 - situação de deadlock não detectado pelo SQL Server

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: 239753
BUG #: 56284 (SQLBUG_70)
Sintomas
Limite de sessões e DTC operações permitem que vários SPIDs vincular ou inscrever-se no mesmo escopo de transação. Isso pode levar a uma condição chamada Bloqueio distribuído . O SQL Server não detecta a situação de deadlock quando três ou mais SPIDs são envolvidos em duas transações acopladas ou listadas.

Aqui é um exemplo simples de um deadlock distribuído que não irá detectar o SQL Server:

Ordem da seqüênciaTransação do DTC nº 1Transação do DTC nº 2
1Inscreve SPID 10 
2SPID 10 atualiza os autores 
3 Inscreve SPID 11
4 SPID 11 atualizações de títulos
5 SPID 11 atualiza os autores
Se tornando bloqueado no SPID 10
6Inscreve SPID 12 
7SPID 12 atualizações de títulos
Se tornando bloqueado no SPID 11
 


O exemplo mostra claramente um deadlock entre as duas transações, mas o deadlock é distribuído entre vários SPIDs inscritas nessas transações.

Se a atualização final títulos foi tentada em 10 de SPID em vez de SPID 12, a mensagem de bloqueio correto será gerada.

A transação (identificação do processo # % d) foi travado com outro processo e foi escolhido como vítima de deadlock. Execute novamente a transação.
Para obter mais detalhes em sessões acopladas ou alistadas consulte as seções a seguir MANUAIS online:

  • Usando conexões vinculados
  • dbenlisttrans
  • Transações distribuídas
  • Como usar o Microsoft Distributed Transaction Coordinator (ODBC)
Como Contornar
Reduza as chances de encontrar o deadlock, empregando as técnicas de prevenção de deadlock padrão. Consulte a seção Evitando Deadlocks dos manuais online do SQL Server para detalhes completos.

Os seguintes artigos contêm informações de bloqueio adicional.
149935INF: Resolvendo deadlocks com transações distribuídas
75722INF: Reduzir a contenção de bloqueio no SQL Server
Situação
A Microsoft confirmou que este é um problema no SQL Server 7.0.
Mais Informações
O design do Microsoft Transaction Server (MTS) é que o comportamento pode ser encontrado mais fácil. Os componentes do MTS podem ser registrados para usar uma transação do DTC para concluir a lógica comercial adequado. No entanto, o uso de conexões ODBC ou OLE DB pode ser pool por pool de conexão OLE DB recurso pool e/ou ODBC.

Muitas seções da documentação do MTS incentive um desenvolvedor para abrir a conexão, executar o trabalho e fechar a conexão. Na verdade, isso é abrir uma conexão e inscrição automaticamente a conexão em uma transação do DTC com base nas propriedades de transação estabelecidas para o objeto com base em MTS. O nível de transação padrão também é SERIALIZABLE . Isso pode causar bloqueios compartilhados no SQL Server para ser mantido aumentando as chances de bloqueio e travamento a atividade.

O objeto COM pode conter vários métodos que são chamados para concluir as ações de determinado para a transação. Se vários métodos de objeto são usados para concluir a lógica comercial associada à transação é muito provável que o pool pode e usarão várias conexões (SPIDs) para o SQL Server para concluir o trabalho transacional. No entanto, quando a situação de deadlock não detectado é encontrada o tempo limite padrão da transação para o DTC é 60 segundos. Em muitos casos 60 segundos mais tarde uma transação irá expirar e o processamento pode continuar.

Além disso, o tempo limite de consulta poderia executar um rolo significativo. O tempo limite padrão da consulta para muitos componentes do MDAC é de 30 segundos, assim o tempo limite de consulta deve ser excedido antes do tempo limite transação do DTC expirou.

[ODBC SQL Server]Tempo limite da consulta
O seguinte artigo contém informações detalhadas e técnicas para manipulação e identificar problemas de bloqueio:

162361INF: Noções básicas sobre e resolvendo problemas de bloqueio do SQL Server

uma consideração especial: Quando observar bloqueado SPIDs acoplado ou inscrito na mesma transação Assista o sysprocesses coluna open_tran . SPIDs acoplado ou inscrito no mesmo espaço transação contenham contagens de transação idêntica. Isso pode ajudar a padrão que SPIDs são parte do mesmo espaço de transação.

Uso do SQL Profiler, captura a coluna de texto dos eventos DTC, registros de IDs de transação do DTC. (A coluna de dados binário também pode fornecer informações valiosas sobre IDs de transação vinculado e alistados.) Quando trabalhar com as transações do DTC especificamente se refere ao evento Propagar DTC para cruzar fazer referência as SPIDs e as transações que foram propagadas para quais SPIDs.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 239753 - Última Revisão: 09/04/2002 06:58:00 - Revisão: 1.0

Microsoft SQL Server 7.0 Standard Edition

  • kbmt kbbug kbpending KB239753 KbMtpt
Comentários
ocument.getElementsByTagName("head")[0].appendChild(m);