다음을 통해 공유


IBCPSession::BCPExec(OLE DB)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

OLE DB 드라이버 다운로드

대량 복사 작업을 수행합니다.

구문

  
HRESULT BCPExec(   
      DBROWCOUNT *pRowsCopied);  

설명

BCPExec 메서드는 IBCPSession::BCPInit 메서드와 함께 사용되는 eDirection 매개 변수의 값에 따라 사용자 파일에서 데이터베이스 테이블로 또는 그 반대로 데이터를 복사합니다.

BCPExec를 호출하기 전에 유효한 사용자 파일 이름으로 BCPInit 메서드를 호출합니다. 이렇게 하지 않으면 오류가 발생합니다. 유일한 예외는 대량 복사 작업에 쿼리를 사용하는 경우입니다. 이 경우 BCPInit 메서드에서 테이블 이름에 NULL을 지정한 다음, BCP_OPTION_HINTS 옵션을 사용하여 쿼리를 지정합니다.

BCPExec 메서드는 무한정 보류될 수 있는 유일한 대량 복사 메서드입니다. 따라서 비동기 모드를 지원하는 유일한 대량 복사 메서드입니다. 비동기 모드를 사용하려면 BCPExec 메서드를 호출하기 전에 공급자별 세션 속성 SSPROP_ASYNCH_BULKCOPY VARIANT_TRUE 설정합니다. 이 속성은 DBPROPSET_SQLSERVERSESSION 속성 집합에서 사용할 수 있습니다. 완료를 테스트하려면 동일한 매개 변수를 사용하여 BCPExec 메서드를 호출합니다. 대량 복사가 아직 완료되지 않은 경우 BCPExec 메서드는 DB_S_ASYNCHRONOUS 반환합니다. 또한 pRowsCopied 인수에서 서버로 보내거나 받은 행 수의 상태 수를 반환합니다. 서버에 전송된 행은 일괄 처리가 끝날 때까지 커밋되지 않습니다.

인수

pRowsCopied[out]
DWORD에 대한 포인터입니다. BCPExec 메서드는 성공적으로 복사된 행 수로 DWORD를 채웁니다. pRowsCopied 인수가 NULL로 설정된 경우 BCPExec 메서드에서 무시됩니다.

반환 코드 값

S_OK
메서드가 성공했습니다.

E_FAIL
공급자 관련 오류가 발생했습니다. 자세한 내용을 보려면 ISQLServerErrorInfo 인터페이스를 사용하세요.

E_UNEXPECTED
예기치 않은 메서드가 호출되었습니다. 예를 들어 BCPInit 메서드는 이 메서드를 호출하기 전에 호출되지 않았습니다. 또한 BCP_OPTION_ABORT 옵션을 사용하여 작업이 중단되고 나중에 BCPExec 메서드가 호출된 경우에도 발생합니다.

E_OUTOFMEMORY
메모리 부족 오류가 발생했습니다.

DB_S_ENDOFROWSET
대량 복사 작업이 완료되고 모든 데이터 전송이 완료되었습니다.

DB_S_ASYNCHRONOUS
현재 행 배치가 복사되었습니다. BCPExec 메서드를 다시 호출하여 다음 일괄 처리를 전송합니다.

DB_S_ERRORSOCCURRED
대량 복사 작업 중에 오류가 발생했으며 일부 행이 복사되지 않았을 수 있습니다. 오류 수는 여전히 허용되는 최대 오류 수보다 작습니다.

참고 항목

IBCPSession(OLE DB)
대량 복사 작업 수행