2013-10-01 2 views
3

SqlBulkCopy를 사용하여 대량 레코드를 테이블에 삽입 할 응용 프로그램이 있습니다. 첫 번째 테이블에 추가 된 레코드를 다른 테이블에 삽입하는 트리거가 있습니다.SQL Server의 BulkCopy에서 트리거가 작동하지 않습니다.

내가 삽입 할 때 C#에서 SqlBulkCopyOptions.FireTriggers를 작성했지만 Sql Server 2005에서 작동하지 않습니다. SqlServer2008에서 제대로 작동하면.

SQL Server 2005에서는 레코드가 첫 번째 테이블에 삽입 될 때마다 INSERTED 행의 레코드 하나만 두 번째 테이블에 나타납니다.

SQL Server를 단독으로 사용하여 이것을 관리 할 수 ​​있습니까?

+0

트리거가 비활성화되어 있습니까? "정상적으로"작동하는지 확인 했습니까? –

+0

정상적으로 작동합니다. – smilu

답변

0

여기서 한 가지 옵션은 스테이징 테이블 (두 번째 단순 테이블 - 기본 데이터 모델의 일부가 아니며 일반적으로 인덱싱/제약/트리거/등 없음)로 대량 복사 한 다음 SELECT 기반으로 발행합니다 INSERT을 사용하여 스테이징 테이블에서 주 트랜잭션 테이블로 데이터를 가져옵니다. 이렇게하면 SqlBulkCopy의 대역폭 이점을 얻을 수 있지만 최종 INSERT에 대한 전체 SQL Server 기능은 계속 유지됩니다.

+0

현재 소스 코드가 없으므로 애플리케이션을 변경할 수 없습니다. Sql을 단독으로 구현하거나 응용 프로그램과 함께 구현할 수 있습니까? 이 경우 – smilu

+0

@smilu를 사용하면 좋습니다. SQL Server 2005를 사용하지 마십시오. 2005 년이 (소프트웨어 용어로는) 매우 오래된 것을 감안할 때 이것이 진정한 문제입니까? –

관련 문제