다음을 통해 공유


IBCPSession::BCPExec(Native Client OLE DB Provider)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

Important

SQL Server Native Client(약칭 SNAC)는 SQL Server 2022(16.x) 및 SSMS(SQL Server Management Studio) 19에서 제거되었습니다. SQL Server Native Client OLE DB 공급자(SQLNCLI 또는 SQLNCLI11)와 레거시 Microsoft OLE DB Provider for SQL Server(SQLOLEDB)는 모두 새로운 개발에 권장되지 않습니다. 앞으로 SQL Server용 새 Microsoft OLE DB 드라이버(MSOLEDBSQL)로 전환합니다.

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

구문

  
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)
대량 복사 작업 수행