Bagikan melalui


bcp_control

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

Mengubah pengaturan default untuk berbagai parameter kontrol untuk salinan massal antara file dan SQL Server.

Sintaks

  
RETCODE bcp_control (  
        HDBC hdbc,  
        INT eOption,  
        void* iValue);  

Argumen

hdbc
Adalah handel koneksi ODBC yang mendukung penyalinan massal.

eOption
Adalah salah satu hal berikut:

BCPABORT
Menghentikan operasi penyalinan massal yang sudah berlangsung. Panggil bcp_control dengan eOpsi BCPABORT dari utas lain untuk menghentikan operasi penyalinan massal yang sedang berjalan. Parameter iValue diabaikan.

BCPBATCH
Adalah jumlah baris per batch. Defaultnya adalah 0, yang menunjukkan semua baris dalam tabel, saat data sedang diekstrak, atau semua baris dalam file data pengguna, saat data sedang disalin ke SQL Server. Nilai kurang dari 1 mengatur ulang BCPBATCH ke default.

BCPDELAYREADFMT
Boolean, jika diatur ke true, akan menyebabkan bcp_readfmt membaca saat eksekusi. Jika false (default), bcp_readfmt akan segera membaca file format. Kesalahan urutan akan terjadi jika BCPDELAYREADFMT benar dan Anda memanggil bcp_columns atau bcp_setcolfmt.

Kesalahan urutan juga akan terjadi jika Anda memanggil bcp_control(hdbc, BCPDELAYREADFMT, (void *)FALSE) setelah memanggil bcp_control(hdbc, BCPDELAYREADFMT, (void *)TRUE) dan bcp_writefmt.

Untuk informasi selengkapnya, lihat Penemuan Metadata.

BCPFILECP
iValue berisi jumlah halaman kode untuk file data. Anda dapat menentukan jumlah halaman kode, seperti 1252 atau 850, atau salah satu nilai ini:

BCPFILE_ACP: data dalam file ada di halaman kode Microsoft Windows klien.

BCPFILE_OEMCP: data dalam file ada di halaman kode OEM klien (default).

BCPFILE_RAW: data dalam file ada di halaman kode SQL Server.

BCPFILEFMT
Nomor versi format file data. Ini bisa 80 ( SQL Server 2000 (8.x)), 90 ( SQL Server 2005 (9.x)), 100 ( SQL Server 2008 (10.0.x) atau SQL Server 2008 R2 (10.50.x)), 110 ( SQL Server 2012 (11.x)), atau 120 ( SQL Server 2014 (12.x)). 120 adalah default. Ini berguna untuk mengekspor dan mengimpor data dalam format yang didukung oleh versi server sebelumnya. Misalnya, untuk mengimpor data yang diperoleh dari kolom teks di server SQL Server 2000 (8.x) ke dalam kolom varchar(max) di server SQL Server 2005 (9.x) atau yang lebih baru, Anda harus menentukan 80. Demikian pula, jika Anda menentukan 80 saat mengekspor data dari kolom varchar(maks), kolom tersebut akan disimpan seperti kolom teks disimpan dalam format SQL Server 2000 (8.x), dan dapat diimpor ke kolom teks server SQL Server 2000 (8.x).

BCPFIRST
Adalah baris pertama data ke file atau tabel yang akan disalin. Defaultnya adalah 1; nilai kurang dari 1 mengatur ulang opsi ini ke defaultnya.

BCPFIRSTEX
Untuk operasi keluar BCP, menentukan baris pertama tabel database yang akan disalin ke dalam file data.

Untuk BCP dalam operasi, menentukan baris pertama file data yang akan disalin ke dalam tabel database.

Parameter iValue diharapkan menjadi alamat bilangan bulat 64-bit yang ditandatangani yang berisi nilai . Nilai maksimum yang dapat diteruskan ke BCPFIRSTEX adalah 2^63-1.

BCPFMTXML
Menentukan bahwa file format yang dihasilkan harus dalam format XML. Ini nonaktif secara default.

File format XML memberikan fleksibilitas yang lebih besar tetapi dengan beberapa batasan tambahan. Misalnya, Anda tidak dapat menentukan awalan dan terminator untuk bidang secara bersamaan, yang dimungkinkan dalam file format yang lebih lama.

Catatan

File format XML hanya didukung ketika SQL Server diinstal bersama dengan SQL Server Native Client.

BCPHINTS
iValue berisi penunjuk string karakter SQLTCHAR. String yang ditangani menentukan petunjuk pemrosesan salinan massal SQL Server atau pernyataan Transact-SQL yang mengembalikan kumpulan hasil. Jika pernyataan Transact-SQL ditentukan yang mengembalikan lebih dari satu tataan hasil, semua tataan hasil setelah yang pertama diabaikan. Untuk informasi selengkapnya tentang petunjuk pemrosesan salinan massal, lihat Utilitas bcp.

BCPKEEPIDENTITY
Saat iValue TRUE, menentukan bahwa fungsi penyalinan massal menyisipkan nilai data yang disediakan untuk kolom SQL Server yang ditentukan dengan batasan identitas. File input harus menyediakan nilai untuk kolom identitas. Jika ini tidak diatur, nilai identitas baru dihasilkan untuk baris yang disisipkan. Setiap data yang ada dalam file untuk kolom identitas diabaikan.

BCPKEEPNULLS
Menentukan apakah nilai data kosong dalam file akan dikonversi ke nilai NULL dalam tabel SQL Server. Ketika iValue TRUE, nilai kosong akan dikonversi ke NULL dalam tabel SQL Server. Defaultnya adalah untuk nilai kosong yang akan dikonversi ke nilai default untuk kolom dalam tabel SQL Server jika ada default.

BCPLAST
Adalah baris terakhir yang disalin. Defaultnya adalah menyalin semua baris; nilai kurang dari 1 mengatur ulang opsi ini ke defaultnya.

BCPLASTEX
Untuk operasi keluar BCP, menentukan baris terakhir tabel database untuk disalin ke dalam file data.

Untuk BCP dalam operasi, menentukan baris terakhir file data untuk disalin ke dalam tabel database.

Parameter iValue diharapkan menjadi alamat bilangan bulat 64-bit yang ditandatangani yang berisi nilai . Nilai maksimum yang dapat diteruskan ke BCPLASTEX adalah 2^63-1.

BCPMAXERRS
Adalah jumlah kesalahan yang diizinkan sebelum operasi penyalinan massal gagal. Defaultnya adalah 10; nilai kurang dari 1 mengatur ulang opsi ini ke defaultnya. Salinan massal memberlakukan maksimum 65.535 kesalahan. Upaya untuk mengatur opsi ini ke nilai yang lebih besar dari 65.535 menghasilkan opsi yang diatur ke 65.535.

BCPODBC
Ketika TRUE, menentukan bahwa nilai datetime dan smalldatetime yang disimpan dalam format karakter akan menggunakan awalan dan akhiran urutan escape tanda waktu ODBC. Opsi BCPODBC hanya berlaku untuk DB_OUT.

Saat FALSE, nilai datetime yang mewakili 1 Januari 1997 dikonversi ke string karakter: 1997-01-01 00:00:00.000. Ketika TRUE, nilai datetime yang sama diwakili sebagai: {ts '1997-01-01 00:00:00.000'}.

BCPROWCOUNT
Mengembalikan jumlah baris yang dipengaruhi oleh operasi BCP saat ini (atau terakhir).

BCPTEXTFILE
Ketika TRUE, menentukan bahwa file data adalah file teks, bukan file biner. Jika file adalah file teks, BCP menentukan apakah itu Unicode atau tidak dengan memeriksa penanda byte Unicode dalam dua byte pertama file data.

BCPUNICODEFILE
Ketika TRUE, menentukan file input adalah file Unicode.

iValue
Adalah nilai untuk eOption yang ditentukan. iValue adalah nilai bilangan bulat (LONGLONG) yang dilemparkan ke penunjuk kekosongan untuk memungkinkan ekspansi ke nilai 64 bit di masa mendatang.

Mengembalikan

BERHASIL atau GAGAL.

Keterangan

Fungsi ini mengatur berbagai parameter kontrol untuk operasi penyalinan massal, termasuk jumlah kesalahan yang diizinkan sebelum membatalkan salinan massal, jumlah baris pertama dan terakhir untuk disalin dari file data, dan ukuran batch.

Fungsi ini juga digunakan untuk menentukan pernyataan SELECT saat menyalin secara massal dari SQL Server kumpulan hasil SELECT. Atur eOption ke BCPHINTS dan atur iValue untuk memiliki penunjuk ke string SQLTCHAR yang berisi pernyataan SELECT.

Parameter kontrol ini hanya bermakna saat menyalin antara file pengguna dan tabel SQL Server. Pengaturan parameter kontrol tidak berpengaruh pada baris yang disalin ke SQL Server dengan bcp_sendrow.

Contoh

// Variables like henv not specified.  
SQLHDBC      hdbc;  
DBINT      nRowsProcessed;  
  
// Application initiation, get an ODBC environment handle, allocate the  
// hdbc, and so on.  
...   
  
// Enable bulk copy prior to connecting on allocated hdbc.  
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (SQLPOINTER) SQL_BCP_ON,  
   SQL_IS_INTEGER);  
  
// Connect to the data source, return on error.  
if (!SQL_SUCCEEDED(SQLConnect(hdbc, _T("myDSN"), SQL_NTS,  
   _T("myUser"), SQL_NTS, _T("myPwd"), SQL_NTS)))  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Initialize bulk copy.   
if (bcp_init(hdbc, _T("address"), _T("address.add"), _T("addr.err"),  
   DB_IN) == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Set the number of rows per batch.   
if (bcp_control(hdbc, BCPBATCH, (void*) 1000) == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Set file column count.   
if (bcp_columns(hdbc, 1) == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Set the file format.   
if (bcp_colfmt(hdbc, 1, 0, 0, SQL_VARLEN_DATA, '\n', 1, 1)  
   == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Execute the bulk copy.   
if (bcp_exec(hdbc, &nRowsProcessed) == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
printf_s("%ld rows processed by bulk copy.", nRowsProcessed);  
  

Lihat Juga

Fungsi Salin Massal