2009-09-30 1 views
3

Microsoft.Practices.EnterpriseLibrary를 사용하여 수천 개의 다른 저장된 procs를 호출하는 .net 3.5 웹 사이트가 있습니다.Microsoft.Practices.EnterpriseLibrary의 기본 격리 수준 설정

우리는 시간 초과를 많이 얻었고 일부 재생 및 테스트 후에 테이블의 끝에있는 (nolock)의 사용은 저장된 procs에서 실제로 결합되어 시간 초과를 줄입니다.

이제 모든 SP에이 작업을 수행하려고합니다. 모든 테이블 이름에 (nolock) 추가 할 수 있지만 SQL "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"를 사용하여 격리 수준을 설정하는 것이 더 좋습니다.

모든 sp의 시작 부분에 this를 추가하지 않겠습니다. 너무 많아서) 연결에 추가 할 방법을 찾고있었습니다.

코드의 예 I이 설정을 생각하고

public static int ExecuteNonQuery(string sStoredProcedureName, params object[] parameterValues) 
{ 
    Data.Database db = Data.DatabaseFactory.CreateDatabase(); 
    using (DbCommand command = db.GetStoredProcCommand(sStoredProcedureName, parameterValues)) 
    { 
     return db.ExecuteNonQuery(command); 
    } 
} 

을 다음과 같이 SP는 전화는 Web.config의에서 구성 설정이지만 그것이 무엇인지 알아낼 기운, 또는 나는 '경우 오른쪽 트랙에서 m.

정말 도움이됩니다.

건배 Amjid

+0

어떤 샘플 전체 코드를 ?? – Kiquenet

답변

1

SQL Server를 사용하고 있다고 가정합니까?

데이터베이스에 READ COMMITTED SNAPSHOT을 설정하십시오.

자세한 내용은 여기를 참조하십시오 : 솔루션

http://www.codinghorror.com/blog/archives/001166.html

+0

늦게 답장을 드려 죄송합니다. 그것은 완벽하게 작동했습니다. 그것은 보드 전체에서 작동하며 이미 코드를 변경하지 않아도됩니다. (noLock)을 제외하고는 이미 넣었습니다. 건배 –

+0

hmmmm 예 ... 물론 예, 물론입니다. – Scozzard