Udostępnij za pośrednictwem


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.

Zobacz także

Odwołanie