问题描述
错误:异常查询是 'CREATE NONCLUSTERED INDEX[I1] ON AllAccounts_BAK([Master_received_Day] ASC)' 出现一个或多个错误.错误:异常内部异常无法从传输连接读取数据:对非阻塞套接字的操作将阻塞.
ERROR: Exception query was 'CREATE NONCLUSTERED INDEX[I1] ON AllAccounts_BAK([Master_received_Day] ASC)' with exception One or more errors occurred.ERROR: Exception Inner Exception Unable to read data from the transport connection: Operation on non-blocking socket would block.
这是执行此查询的 C# 代码:
Here is the Code in C# that executes this query:
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 连接.我已经使用这种代码加载了数据并完成了查询.是什么导致这种错误?
The connection string is tested just before the query to be sure that it will do a connection by retrieving two rows of data. No-one else uses the database. The query has been tested in the SQL Operation Console and it works. It is a tcp connection to an Azure database. I have loaded data and done queries using this kind of code. What causes this kind of error?
推荐答案
嗯,除了连接超时和远程连接超时之外,我发现还有另一个隐藏在 MS 文档中的问题.如果在我的示例中,将打开和执行的两行替换为:
Well, In addition to connection timeouts, and remote connection timeouts, there is another that I found buried in the bowels of MS documentation. If in my example, one replaces the two lines doing the open and execution with:
cmd.Connection.Open();
cmd.CommandTimeout = 0; // 0 sets it so the "command" doesn't time out!
cmd.ExecuteNonQuery();
添加该行后,它工作正常!我很惊讶这没有更明显地说明.如果有人能解释一下,那就太好了!
After adding that line, it works fine! I'm surprised that this isn't stated more obviously. If someone could explain this, it would be great!
这篇关于什么原因导致“非阻塞套接字上的操作会阻塞"错误?在 MSSQL 中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!