IBCPSession::BCPExec (OLE DB)

Führt den Massenkopiervorgang aus.

Syntax

HRESULT BCPExec( 
      DBROWCOUNT *pRowsCopied);

Hinweise

Die BCPExec-Methode kopiert Daten aus einer Benutzerdatei in eine Datenbanktabelle oder umgekehrt, abhängig vom Wert des eDirection-Parameters, der für die IBCPSession::BCPInit-Methode angegeben wird.

Rufen Sie vor dem Aufruf vonBCPExec die BCPInit-Methode mit einem gültigen Benutzerdateinamen auf. Andernfalls wird ein Fehler ausgelöst. Die einzige Ausnahme besteht darin, wenn eine Abfrage für einen Massenkopiervorgang verwendet werden soll. In diesem Fall geben Sie in der BCPInit-Methode NULL für den Tabellennamen an, und dann geben Sie die Abfrage mithilfe der BCP_OPTION_HINTS-Option an.

Die BCPExec-Methode ist die einzige Methode zum Massenkopieren, die wahrscheinlich für einige Zeit nicht zurückkehrt. Es ist deshalb die einzige Massenkopiermethode, die den asynchronen Modus unterstützt. Zur Verwendung des asynchronen Modus legen Sie die anbieterspezifische Sitzungseigenschaft SSPROP_ASYNCH_BULKCOPY vor dem Aufrufen der BCPExec-Methode auf VARIANT_TRUE fest. Diese Eigenschaft ist im DBPROPSET_SQLSERVERSESSION-Eigenschaftensatz verfügbar. Rufen Sie die BCPExec-Methode mit den gleichen Parametern auf, um den Vorgang auf Vollständigkeit zu überprüfen. Wenn das Massenkopieren noch nicht abgeschlossen wurde, gibt die BCPExec-Methode DB_S_ASYNCHRONOUS zurück. Sie gibt überdies im pRowsCopied-Argument eine Statuszahl der Anzahl von Zeilen fest, die zum Server gesendet bzw. vom Server empfangen wurden. Für die zum Server gesendeten Zeilen wird erst ein Commit ausgeführt, wenn das Ende eines Batches erreicht wurde.

Argumente

  • pRowsCopied[out]
    Ein Zeiger auf einen DWORD-Wert. Die BCPExec-Methode füllt den DWORD-Wert mit der Anzahl von Zeilen, die erfolgreich kopiert wurden. Wenn das pRowsCopied-Argument auf NULL festgelegt wurde, wird es von der BCPExec-Methode ignoriert.

Rückgabecodewerte

  • S_OK
    Die Methode wurde erfolgreich ausgeführt.

  • E_FAIL
    Ein anwenderspezifischer Fehler ist aufgetreten. Ausführlichere Informationen erhalten Sie über die ISQLServerErrorInfo-Schnittstelle.

  • E_UNEXPECTED
    Die Methode wurde unerwartet aufgerufen. Die BCPInit-Methode wurde beispielsweise erst nach dem Aufruf dieser Methode aufgerufen. Wird auch zurückgegeben, wenn der Vorgang mit der BCP_OPTION_ABORT-Option abgebrochen und danach die BCPExec-Methode aufgerufen wurde.

  • E_OUTOFMEMORY
    Fehler aufgrund nicht genügenden Arbeitsspeichers

  • DB_S_ENDOFROWSET
    Der Massenkopiervorgang wurde beendet, und die gesamte Datenübertragung wurde abgeschlossen.

  • DB_S_ASYNCHRONOUS
    Der aktuelle Batch von Zeilen wurde kopiert. Rufen Sie die BCPExec-Methode erneut auf, um den nächsten Batch zu übertragen.

  • DB_S_ERRORSOCCURRED
    Während des Massenkopiervorgangs sind Fehler aufgetreten, und einige Zeilen sind möglicherweise nicht kopiert worden. Die Anzahl der Fehler ist immer noch weniger als die maximal zulässige Fehleranzahl.

Siehe auch

Konzepte

Andere Ressourcen