Freigeben über


IBCPSession::BCPControl (OLE DB)

Legt die Optionen für einen Massenkopiervorgang fest.

Syntax

HRESULT BCPControl( 
      int eOption,
      void *iValue);

Hinweise

Mit dieser 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:

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 iValue-Argument 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. Wenn er false (der Standardwert) ist, liest IBCPSession::BCPReadFmt die Formatdatei sofort. Ein Sequenzfehler tritt auf, wenn BCP_OPTION_DELAYREADFMT den Wert true hat und Sie IBCPSession::BCPColumns oder IBCPSession::BCPColFmt aufrufen.

Ein Sequenzfehler tritt auch auf, wenn Sie IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)FALSE)) aufrufen, nachdem Sie IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE) und IBCPSession::BCPWriteFmt aufgerufen haben.

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 sind in der Microsoft Windows®-Codepage 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. Diese kann 80 (SQL Server 2000), 90 (SQL Server 2005), 100 (SQL Server 2008 oder SQL Server 2008 R2) oder 110 (SQL Server 2012) sein. 110 ist der Standard und gibt an, dass die Datei im SQL Server 2012-Format gespeichert ist. 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-Servers in eine varchar(max)-Spalte auf einem SQL Server 2005-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-Format gespeichert und können in eine Textspalte eines SQL Server 2000-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 iValue-Parameter 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.

HinweisHinweis

XML-Formatdateien werden nur unterstützt, wenn die 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 IDENTITY-Einschrä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 iValue-Parameter 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 die angegebene eOption. Das iValue-Argument ist ein Ganzzahlwert, 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 anwenderspezifischer Fehler ist aufgetreten. Ausführlichere Informationen erhalten Sie über die ISQLServerErrorInfo-Schnittstelle.

  • E_UNEXPECTED
    Die Methode wurde unerwartet aufgerufen. Die IBCPSession::BCPInit-Methode wurde beispielsweise erst nach dem Aufruf dieser Funktion aufgerufen.

  • E_OUTOFMEMORY
    Fehler aufgrund nicht genügenden Arbeitsspeichers

Siehe auch

Konzepte

Durchführen von Massenkopiervorgängen

Andere Ressourcen

IBCPSession (OLE DB)