Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Wykonuje pełną kopię zbiorczą danych pomiędzy tabelą bazy danych a plikiem użytkownika.
Syntax
RETCODE bcp_exec (
HDBC hdbc,
LPDBINT pnRowsProcessed);
Arguments
hdbc
Czy obsługa połączenia ODBC z obsługą kopiowania zbiorczego.
pnRowsProcessed
Jest wskazówką do DBINT. Funkcja bcp_exec wypełnia ten DBINT liczbą wierszy pomyślnie skopiowanych. Jeśli pnRowsProcessed jest NULL, jest ignorowany przez bcp_exec.
Zwroty
SUKCES, SUCCEED_ASYNC ALBO PORAŻKA. Funkcja bcp_exec zwraca SUKCES, jeśli wszystkie wiersze zostaną skopiowane. bcp_exec zwraca SUCCEED_ASYNC jeśli operacja kopiowania masowego asynchronicznego nadal jest w toku. bcp_exec zwraca FAIL, jeśli wystąpi całkowita awaria lub jeśli liczba wierszy generujących błędy osiągnie wartość określoną dla BCPMAXERR używających bcp_control. BCPMAXERRS domyślnie ustawia się na 10. Opcja BCPMAXERRS wpływa tylko na błędy składniowe wykryte przez dostawcę podczas odczytu wierszy z pliku danych (a nie na wiersze wysyłane do serwera). Server przerywa partię, gdy wykryje błąd z wierszem. Sprawdź parametr pnRowsProcessed dla liczby poprawnie skopiowanych wierszy.
Remarks
Funkcja ta kopiuje dane z pliku użytkownika do tabeli bazy danych lub odwrotnie, w zależności od wartości parametru eDirection w bcp_init.
Przed wywołaniem bcp_exec zadzwoń bcp_init z poprawną nazwą pliku użytkownika. Niepowodzenie w tym celu powoduje wystąpienie błędu.
bcp_exec jest jedyną funkcją kopiowania masowego, która prawdopodobnie będzie nieczynna przez dłuższy czas. Jest to zatem jedyna funkcja kopiowania masowego obsługująca tryb asynchroniczny. Aby ustawić tryb asynchroniczny, użyj SQLSetConnectAttr , aby ustawić SQL_ATTR_ASYNC_ENABLE na SQL_ASYNC_ENABLE_ON przed wywołaniem bcp_exec. Aby sprawdzić ukończenie, wywołaj bcp_exec z tymi samymi parametrami. Jeśli kopia zbiorcza nie została jeszcze ukończona, bcp_exec zwraca SUCCEED_ASYNC. Zwraca także w pnRowsProcessed liczbę statusów wierszy przesłanych na serwer. Wiersze wysyłane na serwer nie są zatwierdzane, dopóki partia nie zostanie zakończona.
Informacje o przełomowej zmianie w kopiowaniu masowym rozpoczynającej się w SQL Server 2005 (9.x) można znaleźć w artykule Wykonywanie operacji kopiowania masowego (ODBC).
Example
Poniższy przykład pokazuje, jak używać 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.