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

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: 117143
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
A função dbcancel() e sqlcancel(), o Visual Basic SQL (VBSQL) equivalentes, são frequentemente utilizados em aplicações quando não deverão ser. Uma grande percentagem de biblioteca de base de dados (biblioteca de base de dados) ou VBSQL Radical de problemas de aplicações utilizá indevidamente esta chamada de API de programação comuns. Este artigo fornece algumas directrizes práticos sobre quando e quando não utilizar dbcancel() e Sqlcancel().
Mais Informação
Normalmente, é recomendado e considerada uma boa biblioteca de base de dados de prática de programação para processos de todos os resultados enquanto não existirem não mais resultados e todas as linhas até que não existem mais linhas ao obter resultados ou depois de enviar um lote de Transact-SQL para o servidor.

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

Por exemplo, 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 frequentemente tiver, causar problemas de aplicação que não podem ficar evidentes até que mais tarde no desenvolvimento ou testes quando uma acção correctiva é dispendiosa.

Se por alguma razão um aplicativo é necessário para acesso só x linhas do conjunto de resultados, recomendamos que o comando SQL transact "Definir rowcount x" ser utilizado em vez de chamada dbnextrow x horas e, em seguida, dbcancel(). Existem vários motivos para não utilizar dbcancel() como parte dos resultados padrão rotinas de processamento.

Quando não utilizar dbcancel()

dbcancel() não irá cancelar a anulação de alterações, ou consolidar uma transacção definida pelo utilizador. Todos os bloqueios exclusivos adquiridos na transacção definida pelo utilizador serão mantidos mesmo após emitir dbcancel(), uma vez que a transacção definida pelo utilizador é continua activa. Isto pode causar problemas de concorrência difíceis de bloqueio e outros. Quando emitir dbcancel() dentro de uma transacção definida pelo utilizador, o programador deve Certifique-se que a transacção é explicitamente consolidada ou revertida.

Além disso quando operar neste contexto, é fácil perder que uma aplicação, na realidade, está no meio de uma transacção definida pelo utilizador e/foi nunca consolidada ou revertida. Além disso, também existem algumas variantes como dbcancel ou o sinal de atenção gera são implementadas de plataforma para plataforma.

NOTA: O Microsoft SQL Server implementações do dbcancel() são constantes em todas as plataformas de Microsoft SQL Server como Windows NT x 86, Alpha e em RISC plataformas. Podem surgir problemas de compatibilidade principalmente entre diferentes implementações Sybase e o Microsoft SQL Server. Além disso, estas diferenças frequentemente stem de problemas relacionados com o transporte como como dados de fora-de-banda de TCP/IP de um fornecedor são implementados e como interage com implementação de fora-de-banda dados TCP/IP de outro fornecedor, os resultados net da qual podem causar portabilidade problemas nas aplicações de biblioteca de base de dados utilizando dbcancel().

Quando utilizar dbcancel()

dbcancel() deve ser utilizada nos casos em que o utilizador tem para retomar o controlo de uma aplicação. Neste ambiente, um programador pode processar a excepção de um utilizador emitir um dbcancel num ambiente onde dbcancel() não funciona, responder com uma mensagem como "dbcancel() não suportada nesta plataforma!". Um programador pode também pretende utilizar dbcancel() em caso de falha de comando de biblioteca de base de dados como parte de um procedimento de limpeza para os processos de biblioteca de base de dados afectados.
4.20a oob começar tran end dblib

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 117143 - Última Revisão: 02/01/2014 13:16:46 - Revisão: 3.1

Microsoft SQL Server 4.21a Standard Edition, Microsoft SQL Server 6.5 Standard Edition

  • kbnosurvey kbarchive kbmt kbinfo kbprogramming KB117143 KbMtpt
Comentários