Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Kör en fullständig bulkkopia av data mellan en databastabell och en användarfil.
Syntax
RETCODE bcp_exec (
HDBC hdbc,
LPDBINT pnRowsProcessed);
Arguments
hdbc
Är den masskopieringsaktiverade ODBC-anslutningshandtaget.
pnRowsProcessed
Är en pekare till en DBINT.
Funktionen bcp_exec fyller denna DBINT med antalet rader som kopierats framgångsrikt. Om pnRowsProcessed är NULL, ignoreras det av bcp_exec.
Returns
LYCKAS, SUCCEED_ASYNC ELLER MISSLYCKAS. Funktionen bcp_exec returnerar SUCCEED om alla rader kopieras. bcp_exec returnerar SUCCEED_ASYNC om en asynkron bulkkopieringsoperation fortfarande är utestående. bcp_exec returnerar FAIL om ett fullständigt fel inträffar, eller om antalet rader som genererar fel når det värde som anges för BCPMAXERRS som använder bcp_control. BCPMAXERRS är standard 10. BCPMAXERRS-alternativet påverkar endast de syntaxfel som leverantören upptäcker när raderna från datafilen läses (och inte raderna som skickas till servern). Servern avbryter batchen när den upptäcker ett fel med en rad. Kontrollera parametern pnRowsProcessed för antalet rader som kopierats framgångsrikt.
Remarks
Denna funktion kopierar data från en användarfil till en databastabell eller tvärtom, beroende på värdet på eDirection-parametern i bcp_init.
Innan du ringer bcp_exec, ring bcp_init med ett giltigt användarfilnamn. Om du inte gör det resulterar det i ett fel.
bcp_exec är den enda bulkkopieringsfunktionen som sannolikt kommer att vara obesvarad under någon längre tid. Det är därför den enda bulk-kopieringsfunktionen som stödjer asynkront läge. För att ställa in asynkront läge, använd SQLSetConnectAttr för att ställa in SQL_ATTR_ASYNC_ENABLE till SQL_ASYNC_ENABLE_ON innan du anropar bcp_exec. För att testa slutförande, anropa bcp_exec med samma parametrar. Om masskopian ännu inte är klar returnerar bcp_exec SUCCEED_ASYNC. Den returnerar också i pnRowsProcessed en statusräkning av antalet rader som har skickats till servern. Rader som skickas till servern är inte committed förrän slutet av en batch har nåtts.
För information om en brytande förändring i bulkkopiering som började i SQL Server 2005 (9.x), se Performing Bulk Copy Operations (ODBC).
Example
Följande exempel visar hur man använder 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.