Konvertieren von DB-Library-Programmen zum Massenkopieren in ODBC-Programme
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
Das Konvertieren eines DB-Library Massenkopierprogramms in ODBC ist einfach, da die vom SQL Server Native Client ODBC-Treiber unterstützten Massenkopierfunktionen den DB-Library Massenkopierfunktionen ä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 vor der Verbindung BCP_SETL auf, um Massenkopiervorgänge für einen DBPROCESS zu aktivieren. ODBC-Anwendungen rufen stattdessen SQLSetConnectAttr auf, bevor sie eine Verbindung herstellen, um Massenvorgänge für ein 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 Nachrichten- und Fehlerhandler. Sie müssen SQLGetDiagRec aufrufen, um Fehler und Meldungen abzurufen, die von den ODBC-Massenkopierfunktionen 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 DB-Library bcp_bindvarlen-Parameter angegebenen Werte werden anders interpretiert als der ODBC-bcp_bindcbData-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 der varlen-Wert -1 an, dass Daten mit variabler Länge bereitgestellt werden, was in der ODBC cbData so interpretiert wird, dass nur NULL-Werte bereitgestellt werden. Ändern Sie alle DB-Library varlen-Spezifikationen von -1 in SQL_VARLEN_DATA und alle varlen-Spezifikationen von 0 in SQL_NULL_DATA.
Die DB-Library bcp_colfmtfile_collen und die ODBC-bcp_colfmtcbUserData haben das gleiche Problem wie die oben erwähnten 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 void-Zeiger. In DB-Library war iValue eine ganze Zahl. Wandeln Sie die Werte für odbc iValue in void * um.
Die bcp_control Option BCPMAXERRS gibt an, wie viele einzelne Zeilen Fehler aufweisen können, bevor ein Massenkopiervorgang 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 Standardwert 0 abhängen, um einen Massenkopiervorgang zu beenden, müssen so geändert werden, dass die ODBC-bcp_control aufgerufen wird, 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
Gibt bei Festlegung auf TRUE an, dass datetime - und smalldatetime-Werte , die im Zeichenformat gespeichert werden, das ODBC-Timestamp-Escapesequenzpräfix und -Suffix aufweisen. Dies gilt nur für BCP_OUT-Vorgänge.
Wenn BCPODBC auf FALSE festgelegt ist, wird ein in eine Zeichenfolge konvertierter datetime-Wert wie folgt ausgegeben:
1997-01-01 00:00:00.000
Wenn BCPODBC auf TRUE festgelegt ist, wird derselbe 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 Version 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 er mit dem ODBC SQLCHAR-Typdef in Konflikt steht. Verwenden Sie stattdessen SQLCHARACTER für bcp_colfmt.
In den ODBC-Versionen von Massenkopierfunktionen ist das Format für die Arbeit mit datetime - und smalldatetime-Werten in Zeichenfolgen das ODBC-Format yyyy-mm-ttd hh:mm:ssss; smalldatetime-Werte verwenden das ODBC-Format yyyy-mm-tt hh:mm:ss.
Die DB-Library Versionen der Massenkopierfunktionen akzeptieren datetime- und smalldatetime-Werte in Zeichenfolgen in verschiedenen 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 Clientnetzwerk-Hilfsprogramms aktiviert ist, akzeptieren die DB-Library Massenkopierfunktionen auch Datumsangaben im regionalen Datumsformat, das für die Gebietsschemaeinstellung der Clientcomputerregistrierung definiert ist.
Die DB-Library Massenkopierfunktionen 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.
Bei der Ausgabe von Geldwerten im Zeichenformat liefern ODBC-Massenkopierfunktionen vier Ziffern der Genauigkeit und keine Kommatrennzeichen. DB-Library Versionen bieten nur zwei Ziffern der Genauigkeit und enthalten die Kommatrennzeichen.
Weitere Informationen
Durchführen von Massenkopiervorgängen (ODBC)
Bulk Copy Functions
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für