Freigeben über


IBCPSession::BCPInit (OLE DB)

Initialisiert die Massenkopienstruktur, führt eine Fehlerüberprüfung durch, überprüft, ob die Daten- und Formatdateinamen korrekt sind, und öffnet sie dann.

Syntax

  
HRESULT BCPInit(   
const wchar_t *pwszTable,  
const wchar_t *pwszDataFile,  
const wchar_t *pwszErrorFile,  
inteDirection);  

Bemerkungen

Die BCPInit-Methode sollte vor einer anderen Massenkopiemethode aufgerufen werden. Die BCPInit-Methode führt die erforderlichen Initialisierungen für eine Massenkopie von Daten zwischen der Arbeitsstation und SQL Server aus.

Die BCPInit-Methode untersucht die Struktur der Datenbankquelle oder Zieltabelle, nicht die Datendatei. Es gibt Datenformatwerte für die Datendatei basierend auf jeder Spalte in der Datenbanktabelle, Ansicht oder SELECT-Resultset an. Diese Spezifikation enthält den Datentyp jeder Spalte, das Vorhandensein oder Fehlen eines Längen- oder NULL-Indikators und Zeichenfolgen für Endzeichen in den Daten sowie die Breite von Datentypen mit fester Länge. Die BCPInit-Methode legt diese Werte wie folgt fest:

  • Der angegebene Datentyp entspricht dem Datentyp der Spalte in der Datenbanktabelle, der Sicht oder dem SELECT-Resultset. Der Datentyp wird durch systemeigene SQL Server-Datentypen aufgezählt, die in der SQL Server Native Client-Headerdatei (sqlncli.h) angegeben sind. Ihre Werte befinden sich im Muster von BCP_TYPE_XXX. Die Daten werden in ihrem Computerformular dargestellt. Das heißt, Daten aus einer Spalte mit ganzzahligen Datentypen werden durch eine Vier-Byte-Sequenz dargestellt, die auf dem Computer basiert, auf dem die Datendatei erstellt wurde.

  • Wenn ein Datenbankdatentyp eine feste Länge hat, haben auch die Daten der Datendatei eine feste Länge. Massenkopiemethoden, die Daten verarbeiten (z. B. IBCPSession::BCPExec) analysieren Datenzeilen, die erwarten, dass die Länge der Daten in der Datendatei mit der Länge der in der Datenbanktabelle, Ansicht oder SELECT-Spaltenliste angegebenen Daten identisch ist. Beispielsweise müssen Daten für eine Datenbankspalte, die definiert char(13) ist, durch 13 Zeichen für jede Datenzeile in der Datei dargestellt werden. Für Daten mit fester Länge kann ein NULL-Indikator verwendet werden, wenn die Datenbankspalte NULL-Werte zulässt.

  • Beim Kopieren von Daten in SQL Server muss die Datendatei über Daten für jede Spalte in der Datenbanktabelle verfügen. Beim Kopieren von Daten aus SQL Server werden Daten aus allen Spalten in der Datenbanktabelle, Ansicht oder SELECT-Resultset in die Datendatei kopiert.

  • Beim Kopieren von Daten in SQL Server muss die Ordnungsposition einer Spalte in der Datendatei mit der Ordnungsposition der Spalte in der Datenbanktabelle identisch sein. Beim Kopieren von Daten aus SQL Server platziert die BCPExec-Methode Daten basierend auf der Ordnungsposition der Spalte in der Datenbanktabelle.

  • Wenn ein Datenbankdatentyp variabler Länge (z varbinary(22). B. ) ist oder eine Datenbankspalte Nullwerte enthalten kann, werden daten in der Datendatei einem Längen-/Nullindikator vorangestellt. Die Breite des Indikators ändert sich auf der Grundlage des Datentyps und der Version der Massenkopierfunktion. Die OPTION IBCPSession::BCPControl-Methode BCP_OPTION_FILEFMT bietet Kompatibilität zwischen früheren Massenkopiendatendateien und Servern mit späteren Versionen von SQL Server, indem angegeben wird, wann die Breite der Indikatoren in den Daten schmaler ist als erwartet.

Hinweis

Verwenden Sie zum Ändern der für eine Datendatei angegebenen Datenformatwerte die Methoden IBCPSession::BCPColumns und IBCPSession::BCPColFmt .

Massenkopien in SQL Server können für Tabellen optimiert werden, die keine Indizes enthalten, indem sie die Auswahl der Datenbankoption in/Bulkcopy festlegen.

Argumente

pwszTable[in]
Der Name der Datenbanktabelle, die in oder aus der Datenbanktabelle kopiert werden soll. Der Name kann den Datenbanknamen oder den Besitzernamen enthalten. Beispiel: "pubs.username.titles", "pubs.. titles", "username.titles".

Wenn das eDirection-Argument auf BCP_DIRECTION_OUT festgelegt ist, kann das PwszTable-Argument der Name einer Datenbankansicht sein.

Wenn das eDirection-Argument auf BCP_DIRECTION_OUT festgelegt ist und eine SELECT-Anweisung mit der BCPControl-Methode angegeben wird, bevor die BCPExec-Methode aufgerufen wird, muss das pwszTable-Argument auf NULL festgelegt werden.

pwszDataFile[in]
Der Name der Benutzerdatei, die in oder aus der Datei kopiert werden soll.

pwszErrorFile[in]
Der Name der Fehlerdatei, die mit Statusmeldungen, Fehlermeldungen und Kopien aller Zeilen gefüllt werden soll, die nicht aus einer Benutzerdatei in eine Tabelle kopiert werden konnten. Wenn das Argument pwszErrorFile auf NULL festgelegt ist, wird keine Fehlerdatei verwendet.

eDirection[in]
Die Richtung des Kopiervorgangs, entweder BCP_DIRECTION_IN oder BCP_DIRECTION _OUT. BCP_DIRECTION _IN gibt eine Kopie einer Benutzerdatei in eine Datenbanktabelle an; BCP_DIRECTION _OUT gibt eine Kopie aus einer Datenbanktabelle in eine Benutzerdatei an.

Rückgabecodewerte

S_OK
Die Methode war erfolgreich.

E_FAIL
Für detaillierte Informationen ist ein anbieterspezifischer Fehler aufgetreten, verwenden Sie die ISQLServerErrorInfo-Schnittstelle .

E_OUTOFMEMORY
Fehler beim Ausfall des Arbeitsspeichers.

E_INVALIDARG
Mindestens ein Argument wurde nicht ordnungsgemäß angegeben. Beispielsweise wurde ein ungültiger Dateiname angegeben.

Siehe auch

IBCPSession (OLE DB)
Durchführung von Massendatenkopien