2012-04-16 4 views
0

저장 프로 시저를 실행하여 테이블의 레코드를 업데이트하면 시간 초과 오류가 발생하는 문제가 있습니다. 원래 MVC3 응용 프로그램 내에서 저장 프로 시저를 호출합니다.이 응용 프로그램에서 오류를 처음으로 발견했습니다.저장 프로 시저를 실행하는 동안 SQL Server 시간 초과가 발생했습니다.

그러나 SQL Server 프로파일 러를 사용하여 ADO.NET에서 생성 된 코드를 복사하여 데이터베이스에서 직접 실행할 수있었습니다. 이 쿼리를 약 5 분 동안 실행하고 여전히 아무것도 반환하지 못했습니다.

  1. 저장 프로 시저에 전달되는 약 100 개의 인수가 : 여기

    는 몇 가지 사실입니다.

  2. 내 MVC 응용 프로그램, SSMS 및 Sql Server 2008은 모두 동일한 컴퓨터에 설치됩니다.

  3. 저장 프로시 저는 약 5000 개의 항목이 들어있는 테이블의 단일 행을 업데이트하려고 시도합니다.

  4. LastModifiedDateCreatedDate을 업데이트하는 트리거가 있지만 이러한 트리거를 제거하고 EDMX를 업데이트하여 이러한 트리거로 인한 무한 루프가 있는지를 확인했습니다.

  5. 라이브 서버는 실행하려고하는 것과 동일한 저장 프로 시저 (classic asp 사용)를 실행하고 올바른 결과를 얻습니다. 또한, 라이브 서버 내 기계가 고전적인 ASP와 ASP.NET 모두에 대해 저장 프로 시저를 실행하는 데 실패

  6. 저장 프로 시저는 실패 할 것 같다 .NET에서 같은 저장 프로 시저를 실행하는 데 실패 행의 일부에 대해, 그리고 다른 것들은 완벽하게 잘 작동합니다.

  7. 내가

  8. 다른 저장 프로 시저가

  9. 는 특정 테이블에 대한 잠금이있을 나타납니다 잘 작동 저장 프로 시저에 전달되는 매개 변수의 값을 변경 시도가 저장 프로 시저 이 쿼리가 실행되기를 기다리는 경우에도 다른 쿼리를 실행해도 문제가 없으므로 업데이트하려고 시도하고있었습니다.

수행 할 수있는 다른 테스트에 대한 아이디어가 있거나 시간 초과 오류의 근본 원인을 파악하는 데 사용할 수있는 도구가 있다면.

감사합니다.

P. 명령 시간 초과 등록 정보를 변경하라고하지 마십시오.이 값을 0으로 설정하려고 시도했습니다.

+0

테이블과 동일한 문제가 있습니다. 여기에는 열 유형이 hierarchyid입니다. – loviji

+0

"저장 프로 시저에 약 100 개의 인수가 전달됩니다." 어 오?!? 단일 책임 원칙을 위반하지 않고 절차가 100 개의 인수를 얻는 상황을 상상할 수는 없습니다. –

+1

테이블의 행을 100 개의 열로 업데이트하는 저장 프로 시저는 어떻게됩니까? –

답변

0

나는 두 가지를 생각할 수 있습니다 :

  1. 난 당신이 이미 저장 프로 시저에서 예외 처리를 구현했다고 가정합니다. 그렇지 않은 경우 먼저 문제를 파악하십시오.말하면, 일부 행의 경우 불량일 수 있습니다. 데이터입니까? 예외 처리를 수행하는 방법에 대한 정보는 this을 참조하십시오. SQL Server 2008

  2. 데드락이 있는지 여부를 알아 냈습니까? 자세한 절차와 이해를 위해 this을 읽으십시오.

+0

감사합니다. 지금이 자료를 살펴 보겠습니다. –

+0

SQL Server 프로파일 러에 교착 상태 그래프 이벤트를 추가했지만 이벤트가 나타나지 않았습니다. 제가 누락 된 것이 있습니까? 배치 완료 및 배치 시작 이벤트 클래스를 제거하고 교착 상태 그래프 이벤트를 추가했습니다. 지금 2 분 동안 저장 프로 시저를 두었지만 아무것도 표시되지 않았습니다. 이것은 SQL Server가 교착 상태를 감지 할 수 없다는 것을 의미합니까? 또한, 나는 단지 로그를 확인하고 거기에 관련된 항목을 찾을 수 없습니다. –

+0

먼저 예외를 잡으려고 했습니까? 찾은 게있어? 더 나은 이해를 얻으려면 코드를 게시 할 수 있습니까? – AYK

관련 문제