Condividi tramite


IBCPSession::BCPExec (OLE DB)

Esegue l'operazione di copia bulk.

Sintassi

HRESULT BCPExec( 
      DBROWCOUNT *pRowsCopied);

Osservazioni

Il metodo BCPExec copia dati da un file utente a una tabella di database o viceversa, a seconda del valore del parametro eDirection utilizzato con il metodo IBCPSession::BCPInit.

Prima di chiamare BCPExec, chiamare il metodo BCPInit con un nome di file utente valido. In caso contrario, si determina un errore. L'unica eccezione riguarda le query da utilizzare per operazioni di copia bulk per l'esportazione. In un caso di questo tipo, specificare NULL come nome della tabella nel metodo BCPInit, quindi specificare la query utilizzando l'opzione BCP_OPTION_HINTS.

Il metodo BCPExec è l'unico metodo di copia bulk che potrebbe rimanere in attesa per un periodo di tempo, pertanto è l'unico metodo di copia bulk che supporta la modalità asincrona. Per utilizzare la modalità asincrona, impostare la proprietà di sessione SSPROP_ASYNCH_BULKCOPY specifica del provider su VARIANT_TRUE prima di chiamare il metodo BCPExec. Questa proprietà è disponibile nel set di proprietà DBPROPSET_SQLSERVERSESSION. Per eseguire il test del completamento, chiamare il metodo BCPExec utilizzando gli stessi parametri. Se la copia bulk non è stata ancora completata, il metodo BCPExec restituisce DB_S_ASYNCHRONOUS. Restituisce inoltre nell'argomento pRowsCopied un conteggio dello stato del numero di righe inviato a o ricevuto dal server. Il commit delle righe inviate al server non viene eseguito fino a quando non viene raggiunta la fine di un batch.

Argomenti

  • pRowsCopied[out]
    Puntatore a DWORD. Il metodo BCPExec inserisce in DWORD il numero di righe copiate correttamente. Se l'argomento pRowsCopied è impostato su NULL, viene ignorato dal metodo BCPExec.

Valori di codice restituiti

  • S_OK
    Il metodo è riuscito.

  • E_FAIL
    Si è verificato un errore specifico del provider. Per informazioni dettagliate, utilizzare l'interfaccia ISQLServerErrorInfo.

  • E_UNEXPECTED
    La chiamata al metodo non era prevista. Non è stato ad esempio chiamato il metodo BCPInit prima della chiamata a questo metodo. Si verifica anche se l'operazione è stata interrotta mediante l'opzione BCP_OPTION_ABORT e successivamente è stato chiamato il metodo BCPExec.

  • E_OUTOFMEMORY
    Errore di memoria insufficiente.

  • DB_S_ENDOFROWSET
    L'operazione di copia bulk è terminata e il trasferimento dei dati è stato completato.

  • DB_S_ASYNCHRONOUS
    Il batch corrente di righe è stato copiato. Chiamare nuovamente il metodo BCPExec per trasferire il batch successivo.

  • DB_S_ERRORSOCCURRED
    Si sono verificati errori durante l'operazione di copia bulk ed è possibile che alcune righe non siano state copiate. Il numero di errori è ancora al di sotto del numero massimo di errori consentiti.

Vedere anche

Concetti

Altre risorse