bcp_exec
Wykonuje pełną kopiowanie masowe danych między tabelą bazy danych i plików użytkownika.
RETCODE bcp_exec (
HDBC hdbc,
LPDBINT pnRowsProcessed);
Argumenty
hdbc
Czy dojścia połączenia ODBC włączona kopia w zbiorczej.pnRowsProcessed
Jest wskaźnikiem DBINT.The bcp_exec funkcja fills this DBINT with the number of rows successfully copied.Jeśli pnRowsProcessed ma wartość NULL, jest on ignorowany przez bcp_exec.
Zwraca wartość
SUKCESU SUCCEED_ASYNC lub zakończą się NIEPOWODZENIEM.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.Domyślnie BCPMAXERRS 10.Opcja BCPMAXERRS dotyczy tylko błędy składniowe wykryte przez dostawca podczas odczytywania wiersze z pliku danych (a nie wiersze, które zostały wysłane do serwera).Serwer przerywa partia, gdy wykryje błąd w wierszu.Sprawdź pnRowsProcessed parametr dla liczby wierszy, które zostały skopiowane.
Remarks
Ta funkcja kopiuje dane z pliku użytkownika do tabela bazy danych lub na odwrót, w zależności od wartości eDirection parametrbcp_init.
Przed telefonicznej bcp_exec, call bcp_init pod nazwą użytkownika jest nieprawidłowe.Zaniechanie tej czynności powoduje błąd.
bcp_exec jest jedynym kopiowanie masowe funkcja, która może być pozostałą dla dowolnej długości czas.W związku z tym jest jedynym zbiorczej funkcja kopię, która obsługuje asynchroniczny tryb.Aby ustawić tryb asynchronicznych, za pomocą SQLSetConnectAttr ustawić SQL_ATTR_ASYNC_ENABLE SQL_ASYNC_ENABLE_ON przed wywołaniem bcp_exec.Aby przetestować ukończenia, wywoływanie bcp_exec z tymi samymi parametrami.Jeśli kopiowanie masowe nie zostało jeszcze zakończone, bcp_exec zwraca SUCCEED_ASYNC.Zwraca ona także w pnRowsProcessed liczba stan liczbę wierszy, które zostały wysłane do serwera.Wiersze wysłane do serwera nie są zobowiązane do czasu osiągnięcia celu partia.
Aby uzyskać informacje dotyczące podziału, zmiana kopiowanie zbiorczej początkowe w SQL Server 2005, zobacz Wykonywanie operacji kopiowanie masowe (ODBC).
Przykład
W poniższym przykładzie przedstawiono sposób użycia 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(dbproc, &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.