信息: 何时和如何使用 dbcancel() 或 sqlcancel()

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

117143
本文已归档。它按“原样”提供,并且不再更新。
概要
当函数 dbcancel() 和 sqlcancel(),在 Visual Basic SQL (VBSQL) 等效时,常常使用应用程序中不应被。一个较大的百分数常见 db-library (DB 库) 或 VBSQL 编程问题的起源于滥用此 API 调用的应用程序。本文提供了有关何时以及何时不使用 dbcancel() 和 Sqlcancel() 的一些实用的指导原则。
更多信息
它通常是建议,并被视为好 db-library 的编程做法所有结果直到有没有更多搜索结果和所有行直到检索结果时或之后向服务器发送一个 TRANSACT-SQL 批处理有没有更多的行的过程。

db-library 程序永远不应具有对 dbresults()/sqlresults() 和 dbnextrow()/sqlnextrow() 硬编码,使其预定的迭代次数的调用。

例如对于您应调用 dbresults() 和 dbnextrow() 像下面这样:
   while ((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)        {             while (dbnextrow(dbproc) != NO_MORE_ROWS)        }				

不调用 dbresults() 和 $ 作为上面的 dbnextrow() 可以并通常确实,会导致应用程序可能不会明显直到稍后在开发或测试时采取纠正措施是成本高昂的问题。

如果由于某种原因应用程序需要访问仅 x 行从一个结果集,它是建议 transact SQL 命令"设置行数 x"使用而不是调用 dbnextrow x 次,然后 dbcancel()。有几个不使用标准的结果处理例程的一部分的 dbcancel() 原因。

何时不使用 dbcancel()

dbcancel() 不会取消,回滚,或提交一个用户定义的事务。 获取在用户定义的事务中的所有排它锁将会发出 dbcancel(),因为用户定义的事务仍处于活动状态后,甚至被保留。这可能会导致阻塞和其他难以并发问题。用户定义的事务内 dbcancel() 时,交易记录时,可以显式提交或回滚,应确保程序员。

而且在此上下文中运行时, 可以很容易地丢失应用程序实际上是在用户定义的事务,和/是永远不会提交或回滚的过程。此外,也有一些变体 dbcancel 或它生成的关注信号如何实现从平台平台。

注: Microsoft SQL Server 实现 dbcancel() 的都是常数所有 Microsoft SQL Server 平台 (如 Windows NT x86、 Alpha,和 RISC 跨平台。不同的 Sybase 和 Microsoft SQL Server 实现之间的主要会出现兼容性问题。此外,这些差异通常起源于与传输有关的问题,如 net 结果的方式实现一个供应商的 TCP/IP 带外数据以及它与另一个供应商的 TCP/IP 实现带外数据交互,会导致使用 dbcancel() db-library 应用程序中的可移植性问题。

何时使用 dbcancel()

在用户重新控制应用程序的需要的情况下,应使用 dbcancel()。在这种环境中程序员可以处理该异常的用户发出的环境中的 dbcancel dbcancel() 不通过一条消息,如"dbcancel() 此平台上不支持! 响应工作。程序员可能还希望使用作为一个清理过程的一部分的 dbcancel() db-library 命令出现故障的情况下,受影响的 DB Lib 进程。
4.20a oob 开始 tran 结束 dblib

Warning: This article has been translated automatically

属性

文章 ID:117143 - 上次审阅时间:09/13/2013 18:49:49 - 修订版本: 3.1

  • Microsoft SQL Server 4.21a 标准版
  • Microsoft SQL Server 6.5 标准版
  • kbnosurvey kbarchive kbmt kbinfo kbprogramming KB117143 KbMtzh
反馈