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_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.
|
||
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