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.

See Also

Reference