none
sql server 2008 r2를 사용하고 있습니다. 동시성 오류에 대해 질문 합니다 RRS feed

  • 질문

  • 회사내에서 vb.net을 이용하여 2007년에 만들어진 프로그램을 보고있습니다.

    그런데 최근들어 동시성 오류가 많이 발생한다하여 보고있는데 어떻게 잡아야할지 모르겠습니다.

    에러 메시지는

    동시성 위반 : 필요한 1 레코드 중 DeleteCommand의 영향을 받는 0이(가) 없습니다.

    라고 나오는데 adapter를 이용하여 update하는 부분에서 나는거라 보고있는데 이부분을 어떻게 처리하면 좋을까요?

    2012년 10월 3일 수요일 오후 11:53

모든 응답

  • 안녕하십니까? 유영진 님,
    Microsoft MSDN의 Forum 사이트를 방문해 주셔서 감사합니다.

    현재 문의 하신 ”sql server 2008 r2를 사용하고 있습니다. 동시성 오류에 대해 질문 합니다" 대해 답변을 드리겠습니다.

    동시성 위반을 해결하려면

    1.try/catch 블록 내에서 데이터베이스를 업데이트하는 명령을 실행합니다.
    2.예외가 발생하면 catch 문의 Row 속성을 검사하여 위반이 발생한 행을 확인합니다.
    3.사용자 응용 프로그램의 비즈니스 규칙에 따라 오류를 해결하는 코드를 추가합니다.

    다음 코드에서는 CustomersTableAdapter와 NorthwindDataSet을 응용 프로그램의 데이터 어댑터와 데이터 집합의 예제로 사용합니다.

    Try
        CustomersTableAdapter.Update(NorthwindDataSet)
    
    Catch ex As DBConcurrencyException
    
        Dim customErrorMessage As String
        customErrorMessage = "Concurrency violation" & vbCrLf
        customErrorMessage += CType(ex.Row.Item(0), String)
        MessageBox.Show(customErrorMessage)
    
        ' Add business logic code to resolve the concurrency violation...
    
    End Try
    


    [참고자료]
    방법: 동시성 오류 처리

    제시해 드린 답변이 도움이 되었기를 바랍니다.
     
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    2012년 10월 4일 목요일 오전 1:26
    중재자
  • SqlDataAdapter 를 통해 DataSet 을 생성하고 SqlDataAdapter의Update 메서드를 통해 Delete 하는 것으로 보입니다. 마법사 적인 내용으로 작성된 응용프로그램 일수도 있습니다.

    여러가지 원인이 있겠지만

    VB.NET 코드가 작성되고 난후 데이터베이스 스키마가 변경되어 DeleteCommand의 매개변수가 매치가 안되어 발생할 수 도 있습니다.

    일단 매개변수의 자리수 등을 확인해보시길 바랍니다.


    Hong-ju

    2012년 10월 5일 금요일 오전 5:17