bcp_exec
Tam bir yürütür toplu kopyalama veritabanı tablo ve kullanıcı dosyası arasında veri.
Sözdizimi
RETCODE bcp_exec (
HDBC hdbc,
LPDBINT pnRowsProcessed);
Bağımsız değişkenler
hdbc
Toplu kopyalama etkin odbc bağlantı tanıtıcısı olur.pnRowsProcessed
Bir DBINT bir işaretçidir.The bcp_exec function fills this DBINT with the number of rows successfully copied.If pnRowsProcessed is NULL, it is ignored by bcp_exec.
Döndürür
BAŞARISINA, succeed_async veya başarısız olur.The bcp_exec function returns SUCCEED if all rows are copied.bcp_exec returns SUCCEED_ASYNC if an asynchronous bulk copy operation is still outstanding.bcp_exec returns FAIL if a complete failure occurs, or if the number of rows generating errors reaches the value specified for BCPMAXERRS using bcp_control.bcpmaxerrs varsayılan ayar olarak 10.bcpmaxerrs seçeneği, yalnızca veri dosyasını (ve sunucuya gönderilen satırları) satırları okurken sağlayıcı tarafından algılanan sözdizimi hataları etkiler.Bir satır bir hata algıladığında, sunucu toplu iş iş iptal eder.Kontrol pnRowsProcessed parametresi için satır sayısını başarıyla kopyalandı.
Açıklamalar
Bu işlevi veri bir kullanıcı dosya veritabanına kopyalayan tablo ya da tam tersi bağlı olarak değeri eDirection parametresi bcp_init.
Önce arama bcp_exec, çağrı bcp_init geçerli bir kullanıcı dosya adı ile.Bunun yapılmaması sonuçlar hata.
bcp_exec tek toplu kopyalama saat bekleyen büyük olasılıkla işlev.Bu nedenle tek olan toplu kopyalama zaman uyumsuz modu destekleyen bir işlev.İçin küme zaman uyumsuz modu, use sqlkümeConnectAttr için küme için önce edinilecek sql_async_enable_on sql_attr_async_enable bcp_exec.Tamamlanmasını sınamak için çağrı bcp_exec ile aynı parametreleri.toplu kopyalama henüz tamamlanmadı, bcp_exec succeed_async verir.Onu da verir pnRowsProcessed bir durum sayısı sunucuya gönderilen satır sayısı.Bir toplu iş sonuna geldi kadar sunucuya gönderilen satırları iletilmez.
Bir bölme hakkında bilgi için toplu kopyalama, değiştirme, başlangıç SQL Server 2005, bkz: Toplu Kopyala işlemler (odbc) gerçekleştirme.
Örnek
Aşağıdaki örnek, nasıl kullanılacağını gösterir bcp_exec:
// Variables like henv not specified.
HDBC 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("pubs..authors"), _T("authors.sav"), NULL, DB_OUT)
== FAIL)
{
// Raise error and return.
return;
}
// Now, execute the bulk copy.
if (bcp_exec(hdbc, &nRowsProcessed) == FAIL)
{
if (nRowsProcessed == -1)
{
printf_s("No rows processed on bulk copy execution.\n");
}
else
{
printf_s("Incomplete bulk copy. Only %ld row%s copied.\n",
nRowsProcessed, (nRowsProcessed == 1) ? "": "s");
}
return;
}
printf_s("%ld rows processed.\n", nRowsProcessed);
// Carry on.