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

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics 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).

Legt die Optionen für einen Massenkopiervorgang fest.

Syntax


HRESULT BCPControl(   
      int eOption,  
      void *iValue);  

Bemerkungen

Mit der BCPControl-Methode werden verschiedene Steuerelementparameter für Massenkopiervorgänge festgelegt, einschließlich der Anzahl von Fehlern, die vor dem Abbrechen eines Massenkopiervorgangs zulässig sind, der Nummern der ersten und letzten Zeilen, die aus einer Datendatei kopiert werden sollen, und der Batchgröße.

Außerdem wird diese Methode dazu verwendet, die SELECT-Anweisung beim Massenkopieren von Daten aus SQL Server anzugeben. Sie können das eOption-Argument auf BCP_OPTION_HINTS und das iValue-Argument festlegen, um einen Zeiger auf eine Zeichenfolge mit Breitzeichen zur Verfügung zu haben, die die SELECT-Anweisung enthält.

Mögliche Werte für eOption sind:

Option BESCHREIBUNG
BCP_OPTION_ABORT Beendet einen Massenkopiervorgang, der bereits ausgeführt wird. Sie können die BCPControl-Methode mit einem eOption-Argument von BCP_OPTION_ABORT aus einem anderen Thread aufrufen, um den ausgeführten Massenkopiervorgang anzuhalten. Das -Argument iValue wird ignoriert.
BCP_OPTION_BATCH Die Anzahl der Zeilen pro Batch. Der Standardwert ist 0 (null), womit beim Extrahieren von Daten alle Zeilen in einer Tabelle oder beim Kopieren von Daten nach SQL Server alle Zeilen in der Benutzerdatendatei angegeben werden. Mit einem Wert kleiner als 1 wird BCP_OPTION_BATCH auf den Standardwert zurückgesetzt.
BCP_OPTION_DELAYREADFMT Ein boolescher Wert. Wenn er auf TRUE festgelegt ist, erfolgt das Lesen durch IBCPSession::BCPReadFmt bei der Ausführung. Gilt die Standardeinstellung FALSE, wird IBCPSession::BCPReadFm sofort die Formatdatei lesen. Wenn BCP_OPTION_DELAYREADFMT auf TRUE festgelegt ist und Sie IBCPSession::BCPColumns oder IBCPSession::BCPColFmt aufrufen, kommt es zu einem Sequenzfehler.

Ein Sequenzfehler tritt auch auf, wenn Sie nach dem Aufrufen von IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE) und IBCPSession::BCPWriteFmt noch IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)FALSE)) aufrufen.

Weitere Informationen finden Sie unter Metadatenermittlung.
BCP_OPTION_FILECP Das iValue-Argument enthält die Nummer der Codepage für die Datendatei. Sie können die Nummer der Codepage angeben, z. B. 1252 oder 850, oder einen der folgenden Werte:

BCP_FILECP_ACP: Daten in der Datei befinden sich auf der Microsoft Windows-Codeseite des Clients.

BCP_FILECP_OEMCP: Daten in der Datei sind in der OEM-Codepage des Clients (Standard).

BCP_FILECP_RAW: Daten in der Datei sind in der Codepage von SQL Server.
BCP_OPTION_FILEFMT Die Versionsnummer des Datendateiformats. Dies kann 80 (SQL Server 2000 (8.x)), 90 (SQL Server 2005 (9.x)), 100 (SQL Server 2008 (10.0.x) oder SQL Server 2008 R2 (10.50.x)), 110 (SQL Server 2012 (11.x)) oder 120 (SQL Server 2014 (12.x). Der Standardwert ist 120. Dies ist beim Exportieren und Importieren von Daten in Formate nützlich, die in früheren Versionen des Servers unterstützt wurden. Geben Sie beispielsweise zum Importieren von Daten aus einer Textspalte eines SQL Server 2000 (8.x)-Servers in eine varchar(max) -Spalte auf einem SQL Server 2005 (9.x)-Server oder höher den Wert 80 an. Wenn Sie den Wert 80 entsprechend beim Exportieren von Daten aus einer varchar(max) -Spalte angeben, werden diese wie Textspalten im SQL Server 2000 (8.x)-Format gespeichert und können in eine Textspalte einesSQL Server 2000 (8.x) -Servers importiert werden.
BCP_OPTION_FIRST Die erste Datenzeile der zu kopierenden Datei oder Tabelle. Der Standard ist 1; ein Wert kleiner als 1 setzt diese Option auf den Standardwert zurück.
BCP_OPTION_FIRSTEX Gibt für BCP-OUT-Vorgänge die erste Zeile der Datenbanktabelle an, die in die Datendatei kopiert werden soll.

Gibt für BCP-IN-Vorgänge die erste Zeile der Datendatei an, die in die Datenbanktabelle kopiert werden soll.

Der -Parameter iValue sollte die Adresse einer 64-Bit-Ganzzahl mit Vorzeichen sein, die den Wert enthält. Der maximale Wert, der an BCPFIRSTEX übergeben werden kann, ist 2^63-1.
BCP_OPTION_FMTXML Gibt an, dass die generierte Formatdatei das XML-Format aufweisen sollte. Diese Option ist standardmäßig deaktiviert. Die Formatdateien werden standardmäßig als Textdateien gespeichert. Das XML-Format bietet größere Flexibilität, ist jedoch mit einigen Einschränkungen verbunden. Sie können beispielsweise das Präfix und das Abschlusszeichen für ein Feld nicht gleichzeitig angeben, was in älteren Formatdateien durchaus möglich war.

Hinweis: XML-Formatdateien werden nur unterstützt, wenn SQL Server-Tools zusammen mit SQL Server Native Client installiert werden.
BCP_OPTION_HINTS Das iValue-Argument enthält einen Zeichenfolgenzeiger mit Breitzeichen. Die adressierte Zeichenfolge gibt entweder Verarbeitungshinweise für das SQL Server-Massenkopieren oder eine Transact-SQL-Anweisung an, die ein Resultset zurückgibt. Wenn eine Transact-SQL-Anweisung angegeben ist, die mehr als ein Resultset zurückgibt, werden alle auf das erste Resultset folgenden Resultsets nicht berücksichtigt.
BCP_OPTION_KEEPIDENTITY Wenn das iValue-Argument auf TRUE festgelegt ist, wird mit dieser Option angegeben, dass die Massenkopiermethoden Datenwerte einfügen, die für SQL Server-Spalten bereitgestellt werden, die mit einer Identitätsbeschränkung definiert sind. Die Eingabedatei muss Werte für die IDENTITY-Spalten angeben. Wenn dies nicht festgelegt ist, werden neue Identitätswerte für die eingefügten Zeilen generiert. Alle in der Datei für die IDENTITY-Spalten vorhandenen Daten werden ignoriert.
BCP_OPTION_KEEPNULLS Bestimmt, ob leere Datenwerte in der Datei in der SQL Server-Tabelle in NULL-Werte konvertiert werden. Wenn das iValue-Argument auf TRUE festgelegt ist, werden leere Werte in der SQL Server-Tabelle in NULL-Werte konvertiert. In der Standardeinstellung werden leere Werte in einen Standardwert für die Spalte in der SQL Server-Tabelle konvertiert, sofern ein Standardwert angegeben ist.
BCP_OPTION_LAST Die letzte zu kopierende Zeile. Standardmäßig werden alle Zeilen kopiert. Ein Wert kleiner als 1 setzt diese Option auf den Standardwert zurück.
BCP_OPTION_LASTEX Gibt für BCP-OUT-Vorgänge die letzte Zeile der Datenbanktabelle an, die in die Datendatei kopiert werden soll.

Gibt für BCP-IN-Vorgänge die letzte Zeile der Datendatei an, die in die Datenbanktabelle kopiert werden soll.

Der -Parameter iValue sollte die Adresse einer 64-Bit-Ganzzahl mit Vorzeichen sein, die den Wert enthält. Der maximale Wert, der an BCPLASTEX übergeben werden kann, ist 2^63-1.
BCP_OPTION_MAXERRS Die Anzahl von Fehlern, die zulässig sind, bevor der Massenkopiervorgang fehlschlägt. Der Standardwert ist 10. Ein Wert kleiner als 1 setzt diese Option auf den Standardwert zurück. Beim Massenkopieren sind maximal 65.535 Fehler zulässig. Wenn für diese Option größere Werte als 65.535 festgelegt werden, wird diese Option auf 65.535 festgelegt.
BCP_OPTION_ROWCOUNT Gibt die Anzahl von Zeilen zurück, auf die sich der aktuelle (oder letzte) BCP-Vorgang auswirkt.
BCP_OPTION_TEXTFILE Die Datendatei ist keine Binärdatei, sondern eine Textdatei. BCP stellt fest, ob es sich bei der Textdatei um eine Unicode-Datei handelt, indem der Unicode-Bytemarker in den ersten beiden Bytes der Datendatei überprüft wird.
BCP_OPTION_UNICODEFILE Wenn diese Option auf TRUE festgelegt wurde, bedeutet das, dass die Eingabedatei ein Unicode-Dateiformat ist.

Argumente

eOption[in]
Legen Sie eine der im obigen Abschnitt mit Hinweisen aufgelisteten Optionen fest.

iValue[in]
Der Wert für das angegebene eOption-Argument. Das iValue-Argument ist ein ganzzahliger Wert, der in einen void-Zeiger umgewandelt wird, um zukünftige Erweiterungen auf 64-Bit-Werte zuzulassen.

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 IBCPSession::BCPInit-Methode wurde beispielsweise vor dem Aufruf dieser Funktion nicht aufgerufen.

E_OUTOFMEMORY
Fehler aufgrund nicht genügenden Arbeitsspeichers

Weitere Informationen

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