2010-04-15 7 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 프로파일 러에 달리 지정되어 있지만 데이터베이스 서버에서 명령을받는 것으로 생각됩니다.

필자는 적절한 권한이 설정되어 있고 코드 및 저장 프로 시저가 다른 파일과 잘 작동하므로 연결 문자열이 맞다는 것을 알고 있습니다.

다음은 저장 프로 시저를 호출하는 코드입니다. 삽입하려는 파일이 33.5MB이지만 500MB를 초과하는 10,000 개 이상의 파일을 추가 했으므로 중요하지 않을 수도 있습니다. 크기는 문제 :이 호출하는 서버와 데이터베이스 서버 사이에 방화벽이없고, 윈도우 방화벽이이 문제를 해결하기 위해 비활성화 된

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(); 
} 

.

+0

당신이 봤어 등 스위치 저장된 프로 시저를 실행을 무시하고 거기 작동하는지 볼 수 있습니다 소리? – Ocelot20

답변

0

나는 하나의 워크 스테이션에서 저장된 프로 시저를 통해 XML을 업로드 할 때 전에 한 번 본 적이에만

우리는 (우리의 큰 건물에 다른 라우팅) 네트워크 케이블을 변경하고 일했다. 이 같은 엽기

는 어떻게 든 서버 또는 변경 케이블을 다시 장착하거나 동일한 입력을 직접

관련 문제