대량 복사 작업 수행 ( ODBC ) 대량 복사 일괄 처리 크기 관리 
 대량 복사 작업 에서 일괄 처리 의 주요 목적 은 트랜잭션 의 범위 를 정의 하 는 것 입니다 . 일괄 처리 크기 를 설정 하 지 않 으면 대량 복사 함수 에서 전체 대량 복사 를 하나 의 트랜잭션 으로 간주 합니다 . 일괄 처리 크기 를 설정 하 면 각 일괄 처리 에서 일괄 처리 가 완료 될 때 커 밋 되 는 하나 의 트랜잭션 이 구성 됩니다 . 
 일괄 처리 크기 를 지정 하 지 않 고 대량 복사 를 수행 하 는 동안 오류 가 발생 하 면 전체 대량 복사 가 롤백 됩니다 . 장기 실행 대량 복사 는 복구 하 는 데 오랜 시간 이 걸릴 수 있 습니다 . 일괄 처리 크기 를 설정 하 면 대량 복사 에서 각 일괄 처리 를 하나 의 트랜잭션 으로 간주 하 고 각 일괄 처리 를 커 밋 합니다 . 오류 가 발생 할 경우 처리 중 인 마지막 일괄 작업 만 롤백 되 면 됩니다 . 
 일괄 처리 크기 는 잠금 오버헤드 에 도 영향 을 줄 수 있 습니다 . SQL Server 에 대해 대량 복사 를 수행 하 는 경우 bcp _ control 로 TABLOCK 힌트 를 지정 하 여 행 잠금 대신 테이블 잠금 을 얻 을 수 있 습니다 . 오버헤드 를 최소 화 하 여 전체 대량 복사 작업 에 대해 단일 테이블 잠금 을 보유 할 수 있 습니다 . TABLOCK 을 지정 하 지 않 으면 개별 행 에 잠금 이 설정 되 고 , 대량 복사 기간 동안 모든 잠금 을 유지 관리 하 는 오버헤드 로 인해 성능 이 느려질 수 있 습니다 . 트랜잭션 기간 동안 에 만 잠금 이 보유 되 므로 일괄 처리 크기 를 지정 하 면 현재 보유 된 잠금 을 해제 하 는 커밋 이 정기 적 으로 생성 되 어 이 문제 가 해결 됩니다 . 
 많 은 행 을 대량 복사 하 는 경우 일괄 처리 를 구성 하 는 행 수 가 성능 에 큰 영향 을 줄 수 있 습니다 . 권장 되 는 일괄 처리 크기 는 수행 하 는 대량 복사 유형 에 따라 달라집니다 . 
 SQL Server 로 대량 복사 하 는 경우 TABLOCK 대량 복사 힌트 를 지정 하 고 큰 일괄 처리 크기 를 설정 합니다 . 
 TABLOCK 이 지정 되 지 않 은 경우 일괄 처리 크기 를 1 , 000 행 미만 으로 제한 합니다 . 
 데이터 파일 에서 대량 복사 해 올 경우 bcp _ exec 를 호출 하 기 전 에 BCPBATCH 옵션 으로 bcp _ control 을 호출 하 여 일괄 처리 크기 를 지정 합니다 . bcp _ bind 및 bcp _ sendrow 를 사용 하 여 프로그램 변수 에서 대량 복사 하 는 경우 bcp _ sendrow 를 x 회 호출 한 후 bcp _ batch 를 호출 하 여 일괄 처리 크기 를 제어 합니다 . 여기 서 x 는 일괄 처리 의 행 수 입니다 . 
 트랜잭션 크기 를 지정 하 는 것 외 에 도 일괄 처리 는 행이 네트워크 를 통해 서버 로 전송 되 는 시기 에 영향 을 줍니다 . 대량 복사 함수 는 일반 적 으로 네트워크 패킷 이 채워질 때 까지 bcp _ sendrow 에서 행 을 캐시 한 다음 꽉 찬 패킷 을 서버 로 보냅니다 . 하지만 응용 프로그램 에서 bcp _ batch 를 호출 하 면 채워졌 는지 여부 에 관계없이 현재 패킷 이 서버 로 전송 됩니다 . 매우 작 은 일괄 처리 크기 를 사용 하 면 부분 적 으로 채워진 많 은 패킷 이 서버 로 전송 되 므로 성능 이 느려질 수 있 습니다 . 예 를 들 어 모든 bcp _ sendrow 후 에 bcp _ batch 를 호출 하 면 각 행이 개별 패킷 으로 전송 되 므로 행이 매우 크 지 않 으면 각 패킷 의 공간 이 낭비 됩니다 . SQL Server 에 대한 네트워크 패킷 의 기본 크기 는 4 KB 이 지만 응용 프로그램 에서 SQL _ ATTR _ PACKET _ SIZE 특성 을 지정 하 여 SQLSetConnectAttr 을 호출 하 면 크기 를 변경 할 수 있 습니다 .