2010-04-15 53 views
2

我有一個很奇怪的問題。當我使用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防火牆已經被禁用,以解決此問題。

+0

您是否嘗試運行存儲過程,看看它是否在那裏工作? – Ocelot20 2010-04-15 17:32:04

回答

0

我通過一個存儲過程從一個工作站上載XML時見過這個曾經只

我們改變了網絡電纜(這在我們的大建築路由不同)和它的工作。

奇怪的,因爲這聽起來,你能以某種方式重新安裝服務器或改變電纜或直接與相同的輸入旁路開關等