我有一個很奇怪的問題。當我使用SqlCommand.ExecuteNonQuery從C#執行特定的數據庫存儲過程時,我的存儲過程從不執行。Database.ExecuteNonQuery不返回
此外,SQL事件探查器根本沒有註冊該命令。我沒有收到命令超時,也沒有引發任何懷疑。
最奇怪的是,這段代碼在1,200,000次以上工作正常,但對於這個插入數據庫的特定文件,它只是永遠掛起。
當我終止應用程序時,我在數據庫服務器的事件日誌中收到此錯誤:"A fatal error occurued while reading the input stream from the network. The session will be terminated (input error: 64, output error: 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防火牆已經被禁用,以解決此問題。
您是否嘗試運行存儲過程,看看它是否在那裏工作? – Ocelot20 2010-04-15 17:32:04