gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:28:18 24 4
gpt4 key购买 nike

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

ERROR [HYT00] [Microsoft][SQL Server Native Client 10.0]Query timeout expired

我已经尝试更改 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 秒后仍会超时。

我从 Microsoft 得到的信息是 Windows ODBC API 提供了 SQLSetStmtAttr-Function这将允许设置 SQL_ATTR_QUERY_TIMEOUT 属性。也许设置此属性可以解决我的问题 - 但我找不到任何解决方案如何通过 .net 设置此值。

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

最佳答案

像这样使用 OdbcCommand 对象的 CommandTimeout 属性

myCommand.CommandTimeout=37;

关于c# - 在 c# 中为 OdbcConnection (System.Data.Odbc) 设置 ConnectionTimeout 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16035457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com