代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

ADO/SQL Server:“超时过期”的错误代码是什么?

  •  4
  • Ian Boyd  · 技术社区  · 14 年前

    Number:      0x80040E31 (DB_E_ABORTLIMITREACHED in oledberr.h)
    SQLState:    HYT00
    NativeError: 0
    

    这个 NativeError 设置为零是有意义的,因为超时不是数据库引擎(即SQL Server)的函数,而是ADO的内部超时机制的函数。


    这个 Number (即COM hresult)看起来很有用,但是 definition of DB_E_ABORTLIMITREACHED 在里面 oledberr.h 说:

    执行已停止,因为已达到资源限制。未返回任何结果。

    这个错误可能适用于 超时已过期 “(一些可能是服务器端的),例如限制:

    • CPU使用率
    • I/O读/写
    • 网络带宽

    并停止查询。


    SQLState reference for SQLState error codes i can find 不提 HYT00 .

    你该怎么办?


    注:

    0x80040E31 (DB_E_ABORTLIMITREACHED)
    

    “意思是” 超时已过期 “,我无法相信

    0x80004005 (E_UNSPECIFIED_ERROR)
    

    “意思是”


    我的伪问题变成了:有人有关于什么是SQLState的文档吗 HYT000 “什么意思?

    我真正的问题仍然是:我怎样才能特别地捕获ADO 超时已过期

    一定很喜欢开发商想问的问题” 怎样 做正确的事。我也很喜欢谷歌搜索 数据库已中止限制 这个问题是#9,没有找到MSDN。

    更新3

    OLEdb ICommand.Execute reference

    数据库已中止限制

    " 例如 ,意思不是详尽的清单。


    更新三个

    找到了。答案用作答案。

    2 回复  |  直到 13 年前
        1
  •  4
  •   Community CDub    4 年前

    你呢 安全使用 HYT00 “超时已过期” SQLSTATEs 参考文献。它提到了 SQL状态:

    下面的SQLSTATEs表示运行时错误或警告,是编程逻辑的基础。然而,并不能保证所有的司机都会归还。

    01004(数据截断)

    01S02(选项值已更改)

    HY008(操作取消)

    HYC00(未实现可选功能)

    HYT00(超时已过期)

    然后链接到 Appendix A: ODBC Error Codes of the ODBC Programmer's Reference ,它记录了 SQLSTATE 价值观:

    • HYT00型 超时过期了,有趣的是
    • HYT01 连接超时已过期

    所以你可以用HYT00来 超时已过期

        2
  •  0
  •   Community CDub    7 年前

    不只是 -2

    您可以在SSMS和Ado.net中生成它,我们使用它来决定是否重试。

    Old SO Question 和一个 link MSDN