是什么原因导致MSSQL中出现错误“非阻塞套接字上的操作会阻塞”?

时间:2018-09-13 18:44:16

标签: c# sql-server tcp

错误:异常查询为'在ALLAccounts_BAK上创建NONCLUSTERED INDEX [I1] ( [Master_received_Day] ASC )”,但发生一个或多个错误。 错误:异常内部异常无法从传输连接读取数据:在非阻塞套接字上的操作将阻塞。

这是执行此查询的C#代码:

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

在查询之前对连接字符串进行了测试,以确保它将通过检索两行数据来进行连接。没有其他人使用该数据库。该查询已经在SQL操作控制台中进行了测试,并且可以正常工作。这是与Azure数据库的tcp连接。我已经使用此类代码加载了数据并完成了查询。是什么原因导致这种错误?

1 个答案:

答案 0 :(得分:2)

好吧,除了连接超时和远程连接超时外,我还发现了另一个隐藏在MS文档中的东西。如果在我的示例中,将执行打开和执行的两行替换为:

  cmd.Connection.Open();
  cmd.CommandTimeout = 0; // 0 sets it so the "command" doesn't time out!
  cmd.ExecuteNonQuery();

添加该行后,效果很好!令我惊讶的是,这种说法没有更明显地体现出来。如果有人可以解释这一点,那就太好了!