내 SSIS 패키지에는 2 개의 문으로 SQL 실행 태스크가 있습니다. 기본적으로 다음과 같습니다.SSIS의 여러 문 SQL 실행
INSERT INTO table2 SELECT * FROM table1;
TRUNCATE TABLE table1
첫 번째 문이 실패했습니다 (중복 레코드). 그러나 table1은 이제 비어 있습니다! 데이터베이스의 기본 원칙을 오해하니?! 첫 번째 명령문이 실패하면 전체 배치가 실패 할 것으로 예상했습니다.
실행 보고서에 예상되는 오류 메시지가 있습니다. 1. 중복 키 행을 삽입 할 수 없습니다. 2. 명세서가 종료되었습니다. 가능한 실패 이유 즐 - 즐
내 서버는 SQL 서버에게 인 2012 SP2의 CU1, OLEDB 연결
나에게 알려진이 테이블의 다른 잘라 내기 문이 없습니다. 내가 미쳤 니?
INSERT INTO table2 SELECT * FROM table1;
IF @@ERROR = 0
TRUNCATE TABLE table1
왜 하나의 지구를 두 독립된 독립 선언문으로 취급하지 않겠다고 생각하겠습니까? – HLGEM
HLGEM, 나는 항상 트랜잭션을 _ 후행 _ 문을 롤백하는 수단으로 생각하여 _following_ 문을 취소하지 않았습니다. 나는 항상 오류 처리에있어 나빴다. : 각 문 다음에 GO를 추가하면 원래 기대했던 동작을 얻을 수 있습니다. 그러나 트랜잭션과 동일한 배치입니까? – Esc
일괄 처리가 반드시 트랜잭션 일 필요는 없습니다. – HLGEM