gpt4 book ai didi

c# - Database.ExecuteNonQuery 不返回

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:35 25 4
gpt4 key购买 nike

我有一个非常奇怪的问题。当我使用 SqlCommand.ExecuteNonQuery 从 C# 执行特定的数据库存储过程时,我的存储过程从未执行过。

此外,SQL Profiler 根本不注册该命令。我没有收到命令超时,也没有抛出异常。

最奇怪的是这段代码已经运行超过 1,200,000 次,但是对于我插入数据库的这个特定文件,它永远挂起。

当我终止应用程序时,我在数据库服务器的事件日志中收到此错误:“从网络读取输入流时发生 fatal error 。 session 将终止(输入错误:64,输出错误:0)。 这让我认为数据库服务器正在接收命令,尽管 SQL Profiler 另有说明。

我知道设置了适当的权限,并且连接字符串是正确的,因为这段代码和存储过程可以与其他文件一起正常工作。

下面是调用存储过程的代码,可能需要注意的是,我尝试插入的文件是 33.5MB,但我添加了超过 10,000 个大于 500MB 的文件,所以我不认为大小是问题:

using (SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["TheDatabase"].ConnectionString))
using (SqlCommand command = sqlconn.CreateCommand())
{
command.CommandText = "Add_File";
command.CommandType = CommandType.StoredProcedure;
command.CommandTimeout = 30 //should timeout in 30 seconds, but doesn't...
command.Parameters.AddWithValue("@ID", ID).SqlDbType = SqlDbType.BigInt;
command.Parameters.AddWithValue("@BinaryData", byteArr).SqlDbType = SqlDbType.VarBinary;
command.Parameters.AddWithValue("@FileName", fileName).SqlDbType = SqlDbType.VarChar;
sqlconn.Open();
command.ExecuteNonQuery();
}

发出调用的服务器和数据库服务器之间没有防火墙,并且已禁用 windows 防火墙以解决此问题。

最佳答案

我以前在一个工作站通过存储过程上传 XML 时见过一次

我们更换了网络电缆(在我们的大建筑物中以不同方式布线)并且它起作用了。

这听起来很奇怪,你能以某种方式重新安装服务器或更换电缆或绕过交换机等吗?

关于c# - Database.ExecuteNonQuery 不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2647403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com