매우 이상한 문제가 발생했습니다. 데이터가 적절하고 적시에 삽입되었지만 저장 프로 시저가 반환되지 않습니다. 이것에 대해 가장 놀라운 것은 데이터가 매우 빠르게 테이블에 들어가는 것처럼 레코드 타임 스탬프 필드가 항상 밀리 초 내에 채워지는 것입니다. 그러나 반환은 결코 일어나지 않는다.저장 프로 시저가 C# 코드로 제어를 반환하지 않습니다.
중요한 점은 부하시에만 발생한다는 것입니다. 개별 요청은 문제가 없습니다. DB가 충분히 강조되었을 때만이 일이 일어나기 시작합니다.
무엇이 잘못 될 수 있는지 거의 이해하지 못했기 때문에 어떤 아이디어라도 환영합니다.
그 다음은 단순화 C 번호 부분 :
try
{
using (var conn = new SqlConnection(connString))
{
conn.Open();
using (var cmd = new SqlCommand(conn, ....)
{
cmd.CommandType = StoredProcedure;
cmd.ExecuteNonQuery();
// THIS NEVER EXECUTES:
ReportSuccess();
}
}
}
catch (TimeoutException)
{
// EXCEPTION HERE
}
그리고 저장 프로 시저 :
CREATE PROCEDURE dbo.Blah
BEGIN
INSERT dbo.MyTable VALUES (...)
INSERT dbo.MyTable2...
-- Here is where everything stops.
END
업데이트 : 우리는 시간 제한 및 SQL 서버 작업의 상관 관계를 알아 최고의했고, 그것은 비 응용 프로그램을 나타납니다 사용자 활동으로 인해 잠금이 발생했습니다. 이 프로세스는 매우 신속한 삽입 및 매우 신속한 판독을 허용하도록 설계되었습니다. 그러나 일부 개인은 DIRTY READ 정책을 사용하지 않고도 상당히 비싼 쿼리를 실행하게됩니다. 그래도 모든 팁 주셔서 감사합니다.
반환 값은 어디입니까? –
값을 반환하지 않습니다. 반환에 의해 나는 SP가 결코 돌아 오지 않는다는 것을 의미하고 예외는 C# 측에 잡힌다는 것을 의미한다. – Schultz9999
ExecuteNonQuery()가 응답하지 않는다는 의미입니까? –