【发布时间】:2018-10-12 18:40:37
【问题描述】:
根据 SQL Server 中的文档,我已将命令超时设置为 0。我正在索引一个大表,但仍然收到异常“执行超时已过期”。在操作完成之前超时时间已过或服务器没有响应。当我通过 SQL Server Monitor 观察服务器时,服务器正在响应。
下面是相关代码:
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 万行表建立索引。
【问题讨论】:
-
澄清一下,您是通过这个 SqlCommand 创建索引吗?如果是这样,构建索引是否需要 2 个多小时?
-
不,不是。我只是告诉你这个限制。上面的消息很快就失败了。
-
30 秒左右是否“非常快”?
-
其实非常接近30秒。我认为 CommandTimeout = 0 会覆盖它!
-
它通常应该。你能发布你的连接字符串吗?
标签: c# sql-server azure-sql-database