bcp_exec
Wykonuje luzem pełną kopię danych między bazą danych tabela i plików użytkownika.
Składnia
RETCODE bcp_exec (
HDBC hdbc,
LPDBINT pnRowsProcessed);
Argumenty
hdbc
Jest kopiowanie masowe-włączone dojścia połączenia ODBC.pnRowsProcessed
Jest wskaźnik do DBINT.Bcp_exec funkcja wypełnia to DBINT liczbę wierszy, które zostały skopiowane.Jeśli pnRowsProcessed ma wartość NULL, jest ignorowany przez bcp_exec.
Zwraca
SUCCEED, SUCCEED_ASYNC lub niepowodzenie.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ładni wykryty przez dostawca podczas odczytywania wiersze z pliku danych (i nie wierszy, które są wysyłane do serwera).Serwer przerywa partia, gdy wykryje błąd w wierszu.Sprawdź, czy pnRowsProcessed parametr liczba wierszy pomyślnie skopiowane.
Uwagi
Ta funkcja kopiuje dane z pliku użytkownika do tabela bazy danych lub odwrotnie, w zależności od wartości eDirection parametr w bcp_init.
Przed wywoływaniem bcp_exec, call bcp_init prawidłową nazwę pliku.Niewykonanie tego wyniki w błąd.
bcp_exec jest jedynym luzem funkcja kopiowania, który prawdopodobnie będzie pozostałą dla dowolnej długości czas.Jest jedynym kopiowanie masowe funkcja, która obsługuje asynchroniczny tryb.Aby zestaw Asynchroniczny tryb, użyj SQLzestawConnectAttr do zestaw SQL_ATTR_ASYNC_ENABLE do SQL_ASYNC_ENABLE_ON przed wywoływaniem bcp_exec.Aby przetestować zakończenia wywołania bcp_exec o takich samych parametrach.Jeśli nie wykonano jeszcze kopiowanie masowe, bcp_exec zwraca SUCCEED_ASYNC.Zwraca ona również w pnRowsProcessed stan liczba wierszy, które zostały wysłane do serwera.Wiersze wysyłane do serwera nie są przekazywane, dopóki osiągnął koniec partia.
Aby uzyskać informacje dotyczące podziału zmiana kopiowanie luzem początkowe w SQL Server 2005, zobacz Wykonywanie operacji kopiowania luzem (ODBC).
Przykład
Poniższy przykład pokazuje sposób używania 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.