在c#中为OdbcConnection (System.Data.Odbc)设置ConnectionTimeout不起作

本文关键字:设置 ConnectionTimeout Odbc Data 中为 OdbcConnection System | 更新日期: 2023-09-27 18:09:30

我有一个。net 4.0 c#应用程序,需要odbc连接到mssql 2008。这种连接通常是完美的。但是当我运行一个通常运行几分钟的查询时(不,在项目的这一点上,我无法优化查询运行时),我会在30秒后得到一个超时:

ERROR [HYT00] [Microsoft][SQL Server Native Client 10.0]查询超时过期的

我已经尝试更改odbc连接的驱动程序(sqlsrv32.dll, sqlncli10.dll, sqlncli11.dll),但我总是得到类似的错误。

这是我为模拟问题而构建的虚拟代码:

using (
    OdbcConnection conn =
        new OdbcConnection("DSN=d3FA;uid=sa;pwd=1234;MARS_Connection=yes;Connection Timeout=37;"))
{
    conn.ConnectionTimeout = 37;
    conn.Open();
    OdbcCommand myCommand = new OdbcCommand("WAITFOR DELAY '00:00:45'", conn);
    myCommand.ExecuteNonQuery();
}

正如您所看到的,我已经在连接字符串中设置了连接超时,并且还设置了连接的属性。但是这个信息(37秒)似乎在查询执行中被忽略了。30秒后仍然超时。

从微软我有Windows ODBC API提供sqlsetstmtattri - function的信息,这将允许设置SQL_ATTR_QUERY_TIMEOUT属性。也许设置这个属性可以解决我的问题,但是我找不到任何解决方案,我怎么可以通过。net设置这个值。

结论:有没有人知道如何增加超时值?

在c#中为OdbcConnection (System.Data.Odbc)设置ConnectionTimeout不起作

使用OdbcCommand对象的CommandTimeout属性,如

myCommand.CommandTimeout=37;