그들은 라디오로 오랫동안 청취 한 사람에게 처음으로 전화를 건 사람처럼 ....DataReader 및 SQLCommand
다음은 나의 문제입니다. VS 2005 SQL Server 2005 데이터베이스 Windows Forms 앱. 기음#. 큰 테이블 - 780K 레코드. 나는 그것을 소스 테이블이라고 부를 것이다. 소스 테이블을 반복해야하고 각 레코드에 대해 다른 테이블로 무언가를 수행 한 다음 완료된 소스 테이블에 다시 기록하십시오. 아직까지 두 번째 테이블을 업데이트하지 못했습니다 ...
연결 개체 A를 사용하는 datareader를 사용하여 원본 테이블의 모든 레코드를 반복합니다. 각 레코드에 대해 원본 테이블을 업데이트하는 업데이트 문을 작성합니다 이 레코드가 처리되었음을 나타내려면 - 연결 개체 B에 대해 SQL 명령을 사용하여이 uodate를 수행합니다. 그래서 다른 연결 객체는 dataReader가 독점적 인 것을 원한다는 것을 알고 있기 때문입니다.
여기에 문제가 있습니다. X 레코드 (X가 약 60 인 것으로 보이는)를 처리 한 후 업데이트 시간 초과.
이 글을 쓰는 동안 재미있는 일이 아닌 것 같습니다. 내 머리가 트랜잭션 분리 및/또는 잠금과 관련이 있다고 말합니다. 나는 데이터 레코드를 사용하여 소스 레코드를 읽었지만 그 레코드를 변경하고있다 ... 나는 이것이 다른 트랜잭션 격리에 문제를 일으키는 것을 볼 수있다. 그래서 나는 그것에 대해 살펴볼 것이다. ...
누구나이 방법을 알고 해결하는 방법을 알고있다. 그것? 명령 개체의 명령 시간 초과 때에 프로퍼티를 설정해야합니다 같은
건배
는피트
데이터베이스 내에서 수행 할 수 없습니다 - 논리 RE의 톤을 C#으로 작성하려는 두 번째 테이블을 업데이트하고 이미 일부 코드가 있습니다. 여기에 오기 전에 놀식을 시도했는데 그 문제가 해결되었습니다.왜 다음 질문입니까? nolock으로 독자가 사용하는 쿼리를 실행해도 작성자가 차단되지 않습니다. 따라서 nolock을 사용하지 않을 때 소스 레코드가 데이터 보관 기간 동안 잠겨 있다는 것을 알려주는 것은 무엇입니까? –
예, 레코드가 공유 잠금으로 잠겨있어 (즉, 읽기 지속 시간 동안 일치하도록) 잠긴 레코드에 대해 업데이트를 수행 할 수 없습니다. 다른 연결은 레코드를 볼 수 있지만 수정할 수는 없습니다. –