INFO: Quando e como usar dbcancel() ou sqlcancel()

Traduções deste artigo Traduções deste artigo
ID do artigo: 117143 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

A função dbcancel() e sqlcancel(), o Visual Basic SQL (VBSQL) equivalentes, são freqüentemente usados em aplicativos quando eles não devem ser. Uma grande porcentagem de biblioteca (biblioteca de banco de dados) do banco de dados ou VBSQL tronco de problemas de aplicativos que uso indevido essa chamada de API de programação comuns. Este artigo fornece algumas diretrizes práticas sobre quando e quando não usar dbcancel() e Sqlcancel().

Mais Informações

Geralmente, é recomendável e considerada boa prática de programação a biblioteca do banco de dados a processos de todos os resultados até que haja não mais resultados e todas as linhas até que haja não mais linhas quando recuperar resultados ou depois de enviar um lote de Transact-SQL para o servidor.

Um programa de biblioteca de banco de dados nunca deve ter chamadas para dbresults()/sqlresults() e dbnextrow()/sqlnextrow() rígido codificado para um número predeterminado de iterações.

Por exemplo, você deve chamar dbresults() e dbnextrow() assim:
   while ((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)
        {
             while (dbnextrow(dbproc) != NO_MORE_ROWS)
        }
				

Não chamar dbresults() e dbnextrow() como acima pode e normalmente faz, causar problemas de aplicativo que não podem ficar evidentes até mais tarde no desenvolvimento ou teste quando uma ação corretiva é cara.

Se por algum motivo um aplicativo é necessário para acessar somente x linhas de um conjunto de resultado, recomenda que o transact SQL comando "definir o número de linhas x" ser usado em vez de chamada dbnextrow x horas e, em seguida, dbcancel(). Há várias razões para não usar dbcancel() como parte do processamento rotinas de resultados padrão.

Quando não usar dbcancel()

dbcancel() não cancelar, reversão, ou confirmar uma transação definida pelo usuário. Todos os bloqueios exclusivos adquiridos dentro da transação definido pelo usuário serão mantidos mesmo após emitir dbcancel(), já que a transação definido pelo usuário é continua ativa. Isso pode causar bloqueio e outros problemas de simultaneidade difícil. Ao emitir dbcancel() dentro de uma transação definida pelo usuário, o programador deve garantir que a transação é explicitamente confirmada ou revertida.

Além ao operar nesse contexto, é fácil perder que um aplicativo está realmente no meio de uma transação definida pelo usuário que nunca foi confirmada ou revertida. Além disso, há também algumas variações do como dbcancel ou o sinal de atenção que ele gera são implementados de plataforma para a plataforma.

Observação: Implementações do Microsoft SQL Server de dbcancel() são constantes em todas as plataformas Microsoft SQL Server, como Windows NT x 86, Alpha e RISC plataformas. Problemas de compatibilidade surgem principalmente entre diferentes implementações Sybase e o Microsoft SQL Server. Se Além disso, essas diferenças geralmente originam de problemas relacionados ao transporte como como dados de fora de banda de um fornecedor TCP/IP são implementados e como ele interage com a implementação de dados fora de banda de TCP/IP de outro fornecedor, os resultados net de que podem causar problemas portabilidade em aplicativos de biblioteca de banco de dados usando dbcancel().

Quando usar dbcancel()

dbcancel() deve ser usado em casos onde o usuário precisa recuperar o controle de um aplicativo. Nesse ambiente, um programador pode tratar a exceção de um usuário que emite um dbcancel em um ambiente onde dbcancel() não funciona por responder com uma mensagem como "dbcancel() esta plataforma não dá suporte para!". Um programador talvez também queira usar dbcancel() no caso de uma falha de comando de biblioteca de banco de dados como parte de um procedimento de limpeza para os processos biblioteca de banco de dados afetados.

Propriedades

ID do artigo: 117143 - Última revisão: sexta-feira, 13 de setembro de 2013 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbinfo kbprogramming KB117143 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: 117143

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