2009-11-05 3 views
1

SQL 쿼리가 길어 일부 삽입, 업데이트 및 삭제를 수행합니다. 각 쿼리는 동일한 2 개의 매개 변수를 사용합니다. C#에서 SQL 매개 변수로 전달하면 20 분 후에 시간이 초과됩니다. 필자는 매개 변수를 명령 텍스트에 넣기 만하면됩니다. 매개 변수와 함께 사용하면 시간이 끝날 때까지 프로파일 러에 나타나지 않습니다. 내가 놓친 게 있니?매개 변수가 sql 쿼리의 시간 초과를 초래합니다

SqlCommand comm = new SqlCommand(cmdText, conn); 
comm.CommandTimeout = 5 * 60; 
SqlParameter p = new SqlParameter("@key1", SqlDbType.Int); 
p.Value = key1; 
comm.Parameters.Add(p); 
p = new SqlParameter("@key2", SqlDbType.Int); 
p.Value = 1000000; 
comm.Parameters.Add(p); 
comm.ExecuteNonQuery(); 

쿼리를 실행하기 전에 매개 변수 코드를 out로 바꾸고 cmdText를 대체하면 작동합니다. 쿼리 자체는 300 라인 정도입니다. 각 매개 변수는 51 회 사용됩니다.

+1

당신의 C# 코드 – BIDeveloper

+0

을 게시 할 수 있습니다. 쿼리가 시간 초과 될 때까지 프로파일 러에 표시되지 않으면 제출되지 않습니다. –

+0

프로파일 러에서 SQL Stmt Completed 만 얻었는지 아니면 SQL Stmt Started도 얻고 있는지 확인해야합니다. –

답변

0

ExecuteNonQuery() 전에 comm.Prepare() 호출이 누락되었을 수 있습니다.

SQL 명령에 "cmdText"라고 말하는 대신 키가 있습니다.

편집 : 코드에서 매개 변수 방향을 지정하지 않으면 중요 할 수도 있습니다.

0

명령 유형을 설정 했습니까?

var command = new SqlCommand() { CommandType = CommandType.StoredProcedure }; 
관련 문제