ID do artigo: 118552 - Última revisão: quinta-feira, 22 de fevereiro de 2007 - Revisão: 5.3 Descrição de manipular condições de bloqueio no SQL Server
SumárioUm deadlock é uma condição onde processos 2 (ou mais) tentam acessar um recurso que a outra contém um bloqueio. Como cada processo tem uma solicitação de recurso do outro, nenhum processo pode ser concluído. Quando um deadlock é detectado, SQL Server traz de volta a transação que tem o menor tempo e retorna erro de processamento de mensagem 1205 para o aplicativo. Mensagem de erro 1205 finaliza o lote atual e reverte a transação atual. Mais InformaçõesEm alguns casos, uma condição de deadlock fará com que um comando de biblioteca (biblioteca de banco de dados) do banco de dados (como dbsqlexec, dbsqlok ou dbresults) para retornar falha. Sempre é de responsabilidade do programa para verificar os códigos de retorno de cada comando de banco de dados biblioteca. Se falha for retornada por um desses comandos de banco de dados biblioteca, o programa deve cancelar o lote e tentará continuar. Em alguns casos, é possível continuar a execução de comandos subseqüentes no lote. No entanto, como uma situação de deadlock ocorreu e o comando que provocou sua foi revertido, comandos posteriores no lote provavelmente falhará com um erro mais grave, como um objeto não encontrado. Em outros casos, uma condição de bloqueio não fará com que um comando de banco de dados biblioteca para retornar falha. Para lidar com essa condição, o programa deve verificar mensagem 1205 no manipulador de mensagem e use a função dbsetuserdata para se comunicar isso para o seu aplicativo (um exemplo pode ser encontrado no capítulo 4 "biblioteca de banco de dados funções" no SQL Server "Programmer ' s Reference para C" em dbsetuserdata). O programa deve, em seguida, verifique o indicador de bloqueio após cada chamada a biblioteca do banco de dados e deve cancelar o lote se um deadlock é detectado. Embora possa parecer desnecessária cancelar um lote após receber uma mensagem de bloqueio 1205, é necessário porque o servidor não sempre anular o lote em uma situação de deadlock. Se o lote não for cancelado, qualquer tentativa de enviar um novo lote pode resultar em um erro de biblioteca de banco de dados 10038 "Resultados pendentes". Você pode encontrar uma descrição de travado e um exemplo de como detectar uma condição de deadlock no "Apêndice E maximização consistência e simultaneidade" no SQL Server para Windows NT "Referência do programador de C". A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: 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: 118552
(http://support.microsoft.com/kb/118552/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início