로컬 데이터베이스의 레코드를 사용하여 원격 서버의 많은 항목을 업데이트하는 절차를 진행하고 있습니다. 다음은 의사 코드입니다. 아무리 우리가 그것을 최적화 얼마나 저장 프로 시저 내의 루프 내의 트랜잭션
CREATE PROCEDURE UpdateRemoteServer
pre-processing
get cursor with ID's of records to be updated
while on cursor
process the item
는 일상적인 시간이 걸릴 것입니다, 그래서 우리는 모든 것이 하나의 트랜잭션으로 처리하고 싶지 않아요. 항목은 처리 된 후 플래그가 지정되므로 프로세스가 중단되면 중단 된 부분을 다시 가져올 수 있어야합니다.
에서 ("항목을 처리") 루프의 내용을 포장 A /는 전체 문
EXEC UpdateRemoteServer
가 단일 트랜잭션으로 처리됩니다 것 같다 ... 트란이 트릭을하지 않습니다 커밋 시작 . 각 품목 프로세스를 완전하고 별도의 거래로 만들려면 어떻게해야합니까?
나는 "비 트랜잭션 업데이트"이러한 실행 싶지만 참고하지만 옵션은 2008 년
정보를 제공해 주셔서 감사합니다. 이것은 실제로 질문에 대답합니다. 그것과는 별개로, 나는 커서가 빨려 있다는 것을 안다. 이 경우 커서가 성능 문제 *를 일으키는 것이 아니라 루프 내부에서 수행되는 작업입니다. 그러나 그것은 별개의 질문입니다. – harpo
"cursors suck"에 동의하지 않지만 다른 논의입니다. – Thorsten
@IronGoofy : 네 말이 맞아. 커서는 특별한 상황에서 사용해야하는 전문 도구입니다 (스크류 추출기와 같으며, 매일 필요하지 않습니다. "그들이 빨아"라고 말하는 것이 더 쉽습니다. :) –