독자 내부에서 루핑 중이며 독자가 읽고있는 다른 테이블을 업데이트 중입니다. 모든 1000 개 루프 나는)합니다 (transation를 저지하고 싶지만 오류주고 : 나는이 개 다른 답변을 본 적이 그 중 하나가 독자 가까운 말했지만 우리는 분명 우리가 '같은 것을 할 수없는datareader 루프 내에서 트랜잭션을 커밋하십시오.
The transaction operation cannot be performed because there are pending requests working on this transaction.
을 판독기에서 해당 데이터를 사용하여 갱신 명령문을 실행하고 다른 테이블을 갱신하십시오.
그래서 연결에 트랜잭션을 만들면 일부 SQL 명령을 반복하는 datareader가 있습니다. datareader 루프 내에서 update 명령을 실행하고 트랜잭션을 commit()하는 방법은 무엇입니까? datareader 루프?
1) 두 번째 연결을 열고 트랜잭션 업데이트를 위해 그것을 사용
당신은 당신의 코드를 게시 할 수 있습니까? 트랜잭션에 다른 트랜잭션 격리 수준 설정이 필요할 수있는 동시성 문제가 발생할 수 있습니다. –
이미 앱에 있던 기존 데이터 웨어레이터 루프에이 코드를 삽입하는 것만 큼 짜증나고 심층적 인 코드입니다. 그것을 어기는 것은 어렵습니다. 이와 같은 일을하는 것이 일반적이거나, 가능하지 않은 경우에 나는 단지 궁금했습니다. – user441521
트랜잭션 쓰기 작업에 대해 두 번째 독립적 인 연결을 사용할 수 있습니다 (트랜잭션을 1000 회마다 커밋하면 대량 업데이트가 아닌 이유는 무엇입니까?) 또는 datareader 생성자 옵션으로 재생하면 소위 Firehose 모드이며, 정확히 "기억할 수없는"업데이트 가능한 모드가있었습니다. 트랜잭션 내에서 다르게 동작하는 것으로, 찾는 가치가있을 수 있습니다. – dlatikay