Artigo: 118552 - Última revisão: quinta-feira, 22 de Fevereiro de 2007 - Revisão: 5.3

Descrição do tratamento de condições de bloqueio no SQL Server

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sumário

Um bloqueio é uma condição em que processos 2 (ou mais) tentarem aceder a um recurso que o outro contém um bloqueio. Uma vez que cada processo tem um pedido para do outro recurso, nenhum processo pode ser concluído. Quando é detectado um impasse, SQL Server recupera a transacção que tenha menos tempo e devolve erro de processamento de mensagens 1205 à aplicação. Mensagem de erro 1205 termina a secção actual e recupera a transacção actual.

Mais Informação

Em alguns casos, uma condição de impasse fará com que um comando de biblioteca de base de dados (biblioteca de base de dados) (tal como dbsqlexec, dbsqlok ou dbresults) para voltar a falhas. Sempre é da responsabilidade do programa para verificar os códigos de retorno de cada comando de biblioteca de base de dados. Se for devolvida falhas por um destes comandos de biblioteca de base de dados, o programa deve cancelar a secção e não tentar continuar. Em alguns casos, é possível continuar a execução de comandos subsequentes no lote. No entanto, uma vez que ocorreu uma situação de impasse e o comando que causou este foi anulado, posteriores comandos na secção de provavelmente irão falhar com um erro mais sério, como um objecto não encontrado.



Em outros casos, uma condição de impasse não fará com que um comando de biblioteca de base de dados para devolver falhas. Para processar esta condição, o programa deve verificar mensagem 1205 no processador de mensagens e utilize a função dbsetuserdata para comunicar esta com a aplicação (um exemplo, pode encontrar no capítulo 4 "biblioteca de base de dados funções" no SQL Server "Programmer Reference para C" em dbsetuserdata). O programa tem, em seguida, procure o indicador de impasse depois de cada chamada biblioteca de base de dados e deverá cancelar a secção se for detectado um impasse.



Enquanto pode parecer desnecessário cancelar uma secção Depois de receber uma mensagem de impasse 1205, é necessário porque o servidor não abortar sempre a secção de uma situação de impasse. Se a secção não é cancelada, qualquer tentativa para submeter uma nova secção poderá resultar num erro biblioteca de base de dados 10038 "Resultados pendente."

Pode encontrar uma descrição do deadlocking e um exemplo de como detectar uma condição de impasse "Apêndice E maximizar consistência e concorrência" no SQL Server para Windows NT "Programmer Reference para C".

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
Palavras-chave: 
kbmt kbinfo kbprogramming KB118552 KbMtpt
Tradução automáticaTraduçã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 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 Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )