我已根据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秒。我正在为一列中的3,100万行表编制索引。
答案 0 :(得分:0)
首先,连接超时和命令超时不是同一回事。确保您了解差异并正确使用它们。
第二,如果这是来自网页,则还需要考虑与Web服务器等有关的超时值。
第三,要验证是否确实存在超时问题,请在SSMS中执行索引语句,并找出需要花费多长时间。由于实际的索引编制都是在SQL服务器上进行的,而不管它是从哪里调用的,因此无论是从SSMS还是从应用程序运行,索引编制时间都应该大致相等。