Condividi tramite


IBCPSession::BCPExec (provider OLE DB di Native Client)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Importante

SQL Server Native Client (spesso abbreviato SNAC) è stato rimosso da SQL Server 2022 (16.x) e da SQL Server Management Studio 19 (SSMS). Il provider OLE DB di SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider OLE DB legacy Microsoft per SQL Server (SQLOLEDB) non sono consigliati per lo sviluppo di nuove applicazioni. In futuro, passare al nuovo driver Microsoft OLE DB (MSOLEDBSQL) per SQL Server.

Esegue l'operazione di copia bulk.

Sintassi

  
HRESULT BCPExec(   
      DBROWCOUNT *pRowsCopied);  

Osservazioni:

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

Prima di chiamare BCPExec, chiamare il metodo BCPInit con un nome di file utente valido. In caso contrario, viene generato 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 per il nome di tabella nel metodo BCPInit e quindi specificare la query usando l'opzione BCP_OPTION_HINTS.

Il metodo BCPExec è l'unico metodo di copia bulk che potrebbe rimanere in attesa per un certo periodo di tempo, pertanto è l'unico metodo di copia bulk che supporta la modalità asincrona. Per usare 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 verificare che l'operazione sia stata completata, chiamare il metodo BCPExec con gli stessi parametri. Se la copia bulk non è stata ancora completata, il metodo BCPExec restituisce DB_S_ASYNCHRONOUS. Nell'argomento pRowsCopied restituisce anche un conteggio dello stato del numero di righe inviate al server o ricevute 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 del codice restituito

S_OK
Il metodo è riuscito.

E_FAIL
Si è verificato un errore specifico del provider. Per informazioni dettagliate, usare 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 tramite 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 di nuovo 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.

Vedi anche

IBCPSession (OLE DB)
Esecuzione di operazioni di copia bulk