Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Voert een volledige bulkkopie van data uit tussen een databasetabel en een gebruikersbestand.
Syntax
RETCODE bcp_exec (
HDBC hdbc,
LPDBINT pnRowsProcessed);
Arguments
hdbc-
Is de ODBC-verbindingshandgreep waarvoor bulksgewijs kopiëren is ingeschakeld.
pnRowsProcessed
Is een verwijzing naar een DBINT. De bcp_exec-functie vult deze DBINT met het aantal succesvol gekopieerde rijen. Als pnRowsProcessed NULL is, wordt deze genegeerd door bcp_exec.
Returns
SLAGEN, SUCCEED_ASYNC of FAALEN. De bcp_exec-functie geeft SUCCEED terug als alle rijen worden gekopieerd. bcp_exec geeft SUCCEED_ASYNC terug als een asynchrone bulk-kopieeroperatie nog openstaat. bcp_exec geeft FOUT terug als er een volledige fout optreedt, of als het aantal rijen dat fouten genereert de waarde bereikt die is gespecificeerd voor BCPMAXERRS met bcp_control. BCPMAXERRS staat standaard op 10. De BCPMAXERRS-optie beïnvloedt alleen de syntaxisfouten die door de provider worden gedetecteerd tijdens het lezen van de rijen uit het databestand (en niet de rijen die naar de server worden gestuurd). De server stopt de batch wanneer hij een fout met een rij detecteert. Controleer de parameter pnRowsProcessed voor het aantal succesvol gekopieerde rijen.
Remarks
Deze functie kopieert gegevens van een gebruikersbestand naar een databasetabel of omgekeerd, afhankelijk van de waarde van de eDirection-parameter in bcp_init.
Bel bcp_init voordat je bcp_exec aanroept met een geldige gebruikersbestandsnaam. Als u dit niet doet, treedt er een fout op.
bcp_exec is de enige bulk-kopieerfunctie die waarschijnlijk voor enige tijd uitvalt. Het is daarom de enige bulk-kopieerfunctie die asynchrone modus ondersteunt. Om asynchrone modus in te stellen, gebruik SQLSetConnectAttr om SQL_ATTR_ASYNC_ENABLE op SQL_ASYNC_ENABLE_ON te zetten voordat je bcp_exec aanroept. Om te testen op voltooiing, roep bcp_exec aan met dezelfde parameters. Als de bulkkopie nog niet is voltooid, stuurt bcp_exec SUCCEED_ASYNC terug. In pnRowsProcessed geeft het ook een statustelling terug van het aantal rijen dat naar de server is gestuurd. Rijen die naar de server worden gestuurd, worden pas vastgelegd nadat het einde van een batch is bereikt.
Voor informatie over een breaking change in bulk-copying vanaf SQL Server 2005 (9.x), zie Performing Bulk Copy Operations (ODBC).
Example
Het volgende voorbeeld laat zien hoe je bcp_exec gebruikt:
// 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.