Share via


IBCPSession::BCPExec (Native Client OLE DB-Anbieter)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Wichtig

Der SQL Server Native Client (häufig abgekürzt mit SNAC) wurde aus SQL Server 2022 (16.x) und SQL Server Management Studio 19 (SSMS) entfernt. Sowohl der OLE DB-Anbieter für den SQL Server Native Client (SQLNCLI oder SQLNCLI11) als auch der Microsoft OLE DB-Legacyanbieter für SQL Server (SQLOLEDB) werden für Neuentwicklungen nicht empfohlen. Verwenden Sie in Zukunft den neuen Microsoft OLE DB-Treiber für SQL Server (MSOLEDBSQL).

Führt den Massenkopiervorgang aus.

Syntax

  
HRESULT BCPExec(   
      DBROWCOUNT *pRowsCopied);  

Bemerkungen

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

Rufen Sie vor dem Aufruf von BCPExecdie 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 anbieterspezifischer Fehler ist aufgetreten. Ausführliche 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.

Weitere Informationen

IBCPSession (OLE DB)
Durchführen von Massenkopiervorgängen