即使命令超时设置为 0,也会获取 SQL Server 超时异常



我已根据SQL Server中的文档将命令超时设置为0。我正在索引一个大表,但仍然收到异常"执行超时已过期"。 操作完成之前经过的超时期限或服务器没有响应。当我通过 SQL Server 监视器观看它时,服务器正在响应。

以下是相关代码:

private void ExecuteQuery(string qStr)
{
using (SqlConnection cnx = new SqlConnection(_ConnectionString))
{
cnx.Open();
using (SqlCommand cmd = new SqlCommand(qStr, cnx))
{
cmd.CommandTimeout = 0;
cmd.ExecuteNonQuery();
}
}
}

这是连接字符串
Data Source='tcp:aplace.database.windows.net,1433';Initial Catalog='SQL-Dev';User Id='user@place';Password='password';Connection Timeout=360

为什么我会收到执行超时?我也将连接超时设置为 7200 秒。我正在一列上索引一个 3100 万行表。

首先,连接超时和命令超时不是一回事。确保您了解其中的区别并正确使用它们。

其次,如果这是来自网页,您还需要考虑与 Web 服务器等相关的超时值。

第三,若要验证它是否确实是超时问题,请在 SSMS 中执行索引语句并了解需要多长时间。由于无论从何处调用,实际索引都在 SQL 服务器上进行,因此无论是从 SSMS 还是应用程序运行,索引时间都应大致相等。

最新更新