Freigeben über


Konvertierung von DB-Library zu ODBC Bulk Copy

Das Konvertieren eines DB-Library Massenkopieprogramms in ODBC ist einfach, da die vom SQL Server Native Client ODBC-Treiber unterstützten Massenkopiefunktionen den DB-Library Massenkopiefunktionen mit den folgenden Ausnahmen ähneln:

  • DB-Library Anwendungen übergeben einen Zeiger an eine DBPROCESS-Struktur als ersten Parameter von Massenkopienfunktionen. 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 ODBC-Treiber des nativen SQL Server-Clients unterstützt DB-Library Meldungs- und Fehlerhandler nicht; Sie müssen SQLGetDiagRec aufrufen, um Fehler und Nachrichten abzurufen, die von den ODBC-Massenkopiefunktionen ausgelöst werden. Die ODBC-Versionen von Massenkopienfunktionen geben die standardmäßigen Rückgabecodes für Massenkopien von SUCCEED oder FAILED zurück, nicht ODBC-Format-Rückgabecodes, z. B. 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 .

    Bedingung angegeben DB-Library varlen-Wert ODBC cbData-Wert
    Nullwerte angegeben 0 -1 (SQL_NULL_DATA)
    Bereitgestellte Variablendaten –1 -10 (SQL_VARLEN_DATA)
    Leeres Zeichen oder binäre Zeichenfolge NA 0

    In DB-Library gibt ein varlen-Wert 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 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 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 Standardwert 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

      Wenn dieser Wert auf TRUE festgelegt ist, wird angegeben, dass Massenkopiefunktionen Datenwerte einfügen, die für Spalten mit Identitätseinschränkungen bereitgestellt werden. Wenn dies nicht festgelegt ist, werden neue Identitätswerte für die eingefügten Zeilen generiert.

    • BCPHINTS

      Gibt verschiedene Optimierungen für Massenkopien an. Diese Option kann nicht in 6.5 oder früheren Versionen von SQL Server verwendet werden.

    • BCPFILECP

      Gibt die Codeseite der Massenkopiedatei an.

    • BCPUNICODEFILE

      Gibt an, dass eine Massenkopiedatei 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 Kleindatenwerten in Zeichenfolgen 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 Datums- und Kleindatenwerte 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 DB-Library Massenkopiefunktionen auch Datumsangaben im regionalen Datumsformat, das für die Gebietsschemaeinstellung der Clientcomputerregistrierung definiert ist.

    Die DB-Library Funktionen für Massenkopien akzeptieren die ODBC-Formate "Datetime " und "smalldatetime " nicht.

    Wenn das Attribut der SQL_SOPT_SS_REGIONALIZE-Anweisung auf SQL_RE_ON festgelegt ist, akzeptieren die ODBC-Massenkopienfunktionen Datumsangaben im regionalen Datumsformat, das für die Gebietsschemaeinstellung der Clientcomputerregistrierung definiert ist.

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

Siehe auch

Durchführen von Massenkopiervorgängen (ODBC)
Massenkopierfunktionen