Konvertieren von DB-Library-Programmen zum Massenkopieren in ODBC-Programme
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Das Konvertieren eines Massenkopieprogramms von DB-Library in ODBC ist einfach, da die vom SQL Server Native Client ODBC-Treiber unterstützten Massenkopiefunktionen den Massenkopiefunktionen der DB-Library ähneln, mit den folgenden Ausnahmen:
DB-Library-Anwendungen übergeben als ersten Parameter von Funktionen zum Massenkopieren einen Zeiger auf eine DBPROCESS-Struktur. In ODBC-Anwendungen wird der DBPROCESS-Zeiger durch ein ODBC-Verbindungshandle ersetzt.
DB-Library-Anwendungen rufen BCP_SETL auf, bevor Sie eine Verbindung herstellen, um Massenkopievorgänge in einem DBPROCESS zu aktivieren. ODBC-Anwendungen rufen stattdessen SQLSetConnectAttr auf, bevor Sie eine Verbindung herstellen, um Massenvorgänge in einem Verbindungshandle zu aktivieren:
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (void *)SQL_BCP_ON, SQL_IS_INTEGER);
Der SQL Server Native Client ODBC-Treiber unterstützt keine DB-Library-Meldungs- und Fehlerhandler; Sie müssen SQLGetDiagRec aufrufen, um Fehler und Nachrichten abzurufen, die von den ODBC-Massenkopiefunktionen ausgelöst werden. Die ODBC-Versionen der Massenkopierfunktionen geben die Standardrückgabecodes SUCCEED bzw. FAILED für das Massenkopieren zurück statt der Rückgabecodes im ODBC-Stil, wie SQL_SUCCESS oder SQL_ERROR.
Die für den PARAMETER DB-Library bcp_bindvarlen angegebenen Werte werden anders interpretiert als der ODBC-bcp_bind cbData-Parameter.
Angegebene Bedingung DB-Library varlen-Wert ODBC cbData-Wert Angabe von NULL-Werten 0 -1 (SQL_NULL_DATA) Angabe von variablen Daten -1 -10 (SQL_VARLEN_DATA) Zeichen oder binäre Zeichenfolge mit der Länge 0 Nicht verfügbar 0 In DB-Library gibt ein Varlenwert von -1 an, dass Daten mit variabler Länge angegeben werden, die in ODBC cbData interpretiert werden, sodass nur NULL-Werte bereitgestellt werden. Ändern Sie alle Varlenspezifikationen der DB-Library von -1 in SQL_VARLEN_DATA und alle Varlen-Spezifikationen von 0 in SQL_NULL_DATA.
Die DB-Library-bcp_colfmt file_collen und das ODBC-bcp_colfmt cbUserData haben das gleiche Problem wie die oben aufgeführten parameter bcp_bindvarlen und cbData. Ändern Sie alle DB-Library-file_collen Spezifikationen von -1 in SQL_VARLEN_DATA und alle file_collen Spezifikationen von 0 in SQL_NULL_DATA.
Der iValue-Parameter der ODBC-bcp_control-Funktion ist ein leerer Zeiger. In db-Library war iValue eine ganze Zahl. Wandeln Sie die Werte für den ODBC-iValue in "void *" um.
Die option bcp_control BCPMAXERRS gibt an, wie viele einzelne Zeilen Fehler aufweisen können, bevor ein Massenkopievorgang fehlschlägt. Der Standardwert für BCPMAXERRS ist 0 (Fehler beim ersten Fehler) in der DB-Library-Version von bcp_control und 10 in der ODBC-Version. DB-Library-Anwendungen, die vom Standard von 0 zum Beenden eines Massenkopievorgangs abhängen, müssen geändert werden, um die ODBC-bcp_control aufzurufen, um BCPMAXERRS auf 0 festzulegen.
Die ODBC-bcp_control-Funktion unterstützt die folgenden Optionen, die von der DB-Library-Version von bcp_control nicht unterstützt werden:
BCPODBC
Wenn dieser Wert auf TRUE festgelegt ist, gibt es an, dass datums- und smalldatetime-Werte , die im Zeichenformat gespeichert sind, das Präfix und suffix der ODBC-Zeitstempel-Escapesequenz aufweisen. Dies gilt nur für BCP_OUT-Vorgänge.
Wenn BCPODBC auf FALSE festgelegt ist, wird ein datumstime-Wert , der in eine Zeichenfolge konvertiert wird, ausgegeben als:
1997-01-01 00:00:00.000
Wenn BCPODBC auf TRUE festgelegt ist, wird der gleiche Datetime-Wert ausgegeben wie:
{ts '1997-01-01 00:00:00.000' }
BCPKEEPIDENTITY
Durch die Festlegung dieser Option auf TRUE wird angegeben, dass Massenkopierfunktionen Datenwerte einfügen, die für Spalten mit einer IDENTITY-Einschränkung bereitgestellt werden. Wenn dies nicht festgelegt ist, werden neue Identitätswerte für die eingefügten Zeilen generiert.
BCPHINTS
Gibt verschiedene Optimierungen für das Massenkopieren an. Diese Option kann nicht in 6.5 oder früheren Versionen von SQL Server verwendet werden.
BCPFILECP
Gibt die Codepage für die Datendatei des Massenkopiervorgangs an.
BCPUNICODEFILE
Gibt an, dass eine Datendatei für das Massenkopieren im Zeichenmodus eine Unicode-Datei ist.
Die ODBC-bcp_colfmt-Funktion unterstützt den file_type Indikator von SQLCHAR nicht, da sie mit dem ODBC SQLCHAR-Typdef in Konflikt steht. Verwenden Sie stattdessen SQLCHARACTER für bcp_colfmt.
In den ODBC-Versionen von Massenkopienfunktionen ist das Format für das Arbeiten mit Datums- und Kleindaten in Zeichenzeichenfolgen das ODBC-Format von yyyy-mm-dd hh:mm:ss.sss; Smalldatetime-Werte verwenden das ODBC-Format von yyyy-mm-dd hh:mm:ss.
Die DB-Library-Versionen der Massenkopiefunktionen akzeptieren Datetime - und Smalldatetime-Werte in Zeichenfolgen mit mehreren Formaten:
Das Standardformat ist mmm dd yyyy hh:mmxx , wobei xx entweder AM oder PM ist.
datetime- und smalldatetime-Zeichenfolgen in einem beliebigen Format, das von der DB-Library-Dbconvert-Funktion unterstützt wird.
Wenn das Kontrollkästchen "Internationale Einstellungen verwenden" auf der Registerkarte "DB-Library-Optionen" des SQL Server Client Network Utility aktiviert ist, akzeptieren die Massenkopiefunktionen der DB-Bibliothek auch Datumsangaben im regionalen Datumsformat, das für die Gebietsschemaeinstellung der Clientcomputerregistrierung definiert ist.
Die Massenkopiefunktionen der DB-Library akzeptieren die ODBC-Formate "datetime " und "smalldatetime " nicht.
Wenn das SQL_SOPT_SS_REGIONALIZE-Anweisungsattribut auf SQL_RE_ON festgelegt wurde, akzeptieren die ODBC-Funktionen zum Massenkopieren auch Datumsangaben in dem regionalen Datumsformat, das für die Einstellung des Gebietsschemas in der Registrierung des Clientcomputers definiert wurde.
Beim Ausgeben von Geldwerten im Zeichenformat liefern ODBC-Massenkopiefunktionen vier Ziffern Genauigkeit und keine Kommatrennzeichen; DB-Library-Versionen liefern nur zwei Ziffern Genauigkeit und enthalten die Kommatrennzeichen.
Weitere Informationen
Durchführen von Massenkopiervorgängen (ODBC)
Massenkopierfunktionen