Bagikan melalui


Mengonversi dari DB-Library ke Salinan Massal ODBC

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Mengonversi program salinan massal DB-Library ke ODBC mudah karena fungsi salinan massal yang didukung oleh driver ODBC Klien Asli SQL Server mirip dengan fungsi salinan massal Pustaka DB, dengan pengecualian berikut:

  • Aplikasi Pustaka DB meneruskan penunjuk ke struktur DBPROCESS sebagai parameter pertama fungsi salinan massal. Dalam aplikasi ODBC, penunjuk DBPROCESS diganti dengan handel koneksi ODBC.

  • Aplikasi Pustaka DB memanggil BCP_SETL sebelum menyambungkan untuk mengaktifkan operasi penyalinan massal pada DBPROCESS. Aplikasi ODBC sebagai gantinya memanggil SQLSetConnectAttr sebelum menyambungkan untuk mengaktifkan operasi massal pada handel koneksi:

    SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP,  
        (void *)SQL_BCP_ON, SQL_IS_INTEGER);  
    
  • Driver ODBC Klien Asli SQL Server tidak mendukung pesan DB-Library dan penanganan kesalahan; Anda harus memanggil SQLGetDiagRec untuk mendapatkan kesalahan dan pesan yang dimunculkan oleh fungsi salinan massal ODBC. Versi ODBC dari fungsi salinan massal mengembalikan kode pengembalian salinan massal standar DARI BERHASIL atau GAGAL, bukan kode pengembalian gaya ODBC, seperti SQL_SUCCESS atau SQL_ERROR.

  • Nilai yang ditentukan untuk parameter DB-Library bcp_bindvarlen ditafsirkan secara berbeda dari parameter ODBC bcp_bindcbData.

    Kondisi yang ditunjukkan Nilai varlen Pustaka DB Nilai ODBC cbData
    Nilai null yang disediakan 0 -1 (SQL_NULL_DATA)
    Data variabel yang disediakan -1 -10 (SQL_VARLEN_DATA)
    Karakter panjang nol atau string biner NA 0

    Dalam DB-Library, nilai varlen -1 menunjukkan bahwa data panjang variabel sedang disediakan, yang dalam ODBC cbData ditafsirkan berarti bahwa hanya nilai NULL yang disediakan. Ubah spesifikasi varlen Pustaka DB -1 menjadi SQL_VARLEN_DATA dan spesifikasi varlen 0 menjadi SQL_NULL_DATA.

  • File_collen bcp_colfmtPustaka DB dan cbUserData bcp_colfmtODBC memiliki masalah yang sama dengan parameter bcp_bindvarlen dan cbData yang disebutkan di atas. Ubah spesifikasi file_collen Pustaka DB -1 menjadi SQL_VARLEN_DATA dan spesifikasi file_collen 0 menjadi SQL_NULL_DATA.

  • Parameter iValue dari fungsi bcp_control ODBC adalah penunjuk yang batal. Di Pustaka DB, iValue adalah bilangan bulat. Transmisikan nilai untuk ODBC iValue untuk membatalkan *.

  • Opsi bcp_control BCPMAXERRS menentukan berapa banyak baris individual yang dapat mengalami kesalahan sebelum operasi penyalinan massal gagal. Default untuk BCPMAXERRS adalah 0 (gagal pada kesalahan pertama) dalam versi Pustaka DB bcp_control dan 10 dalam versi ODBC. Aplikasi Pustaka DB yang bergantung pada default 0 untuk mengakhiri operasi penyalinan massal harus diubah untuk memanggil odbc bcp_control untuk mengatur BCPMAXERRS ke 0.

  • Fungsi bcp_control ODBC mendukung opsi berikut yang tidak didukung oleh versi pustaka DB bcp_control:

    • BCPODBC

      Ketika diatur ke TRUE, menentukan bahwa nilai datetime dan smalldatetime yang disimpan dalam format karakter akan memiliki awalan dan akhiran urutan escape tanda waktu ODBC. Ini hanya berlaku untuk operasi BCP_OUT.

      Dengan BCPODBC diatur ke FALSE, nilai tanggalwaktu yang dikonversi ke string karakter adalah output sebagai:

      1997-01-01 00:00:00.000  
      

      Dengan BCPODBC diatur ke TRUE, nilai tanggalwaktu yang sama adalah output sebagai:

      {ts '1997-01-01 00:00:00.000' }  
      
    • BCPKEEPIDENTITY

      Saat diatur ke TRUE, menentukan bahwa fungsi penyalinan massal menyisipkan nilai data yang disediakan untuk kolom dengan batasan identitas. Jika ini tidak diatur, nilai identitas baru dihasilkan untuk baris yang disisipkan.

    • BCPHINTS

      Menentukan berbagai pengoptimalan salinan massal. Opsi ini tidak dapat digunakan pada versi SQL Server 6.5 atau yang lebih lama.

    • BCPFILECP

      Menentukan halaman kode file salinan massal.

    • BCPUNICODEFILE

      Menentukan bahwa file salinan massal mode karakter adalah file Unicode.

  • Fungsi odbc bcp_colfmt tidak mendukung indikator file_type SQLCHAR karena bertentangan dengan typedef ODBC SQLCHAR. Gunakan SQLCHARACTER sebagai gantinya untuk bcp_colfmt.

  • Dalam versi ODBC dari fungsi salinan massal, format untuk bekerja dengan nilai tanggalwaktu dan smalldatetime dalam string karakter adalah format ODBC dari yyyy-mm-dd hh:mm:ss.sss; nilai smalldatetime menggunakan format ODBC yyyy-mm-dd hh:mm:ss.

    Versi Pustaka DB dari fungsi salinan massal menerima nilai tanggalwaktu dan smalldatetime dalam string karakter menggunakan beberapa format:

    • Format defaultnya adalah mmm dd yyyy hh:mmxx di mana xx adalah AM atau PM.

    • string karakter datetime dan smalldatetime dalam format apa pun yang didukung oleh fungsi dbconvert Pustaka DB.

    • Saat kotak Gunakan pengaturan internasional dicentang pada tab Opsi Pustaka DB dari Utilitas Jaringan Klien SQL Server, fungsi salinan massal Pustaka DB juga menerima tanggal dalam format tanggal regional yang ditentukan untuk pengaturan lokal registri komputer klien.

    Fungsi salinan massal Pustaka DB tidak menerima format tanggalwaktu ODBC dan smalldatetime.

    Jika atribut pernyataan SQL_SOPT_SS_REGIONALIZE diatur ke SQL_RE_ON, fungsi salinan massal ODBC menerima tanggal dalam format tanggal regional yang ditentukan untuk pengaturan lokal registri komputer klien.

  • Saat menghasilkan nilai uang dalam format karakter, fungsi salinan massal ODBC menyediakan empat digit presisi dan tidak ada pemisah koma; Versi Pustaka DB hanya menyediakan dua digit presisi dan menyertakan pemisah koma.

Lihat Juga

Melakukan Operasi Salin Massal (ODBC)
Fungsi Salin Massal