Compartir a través de


IBCPSession::BCPExec (proveedor OLE DB de Native Client)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Importante

SQL Server Native Client (a menudo abreviado SNAC) se ha quitado de SQL Server 2022 (16.x) y SQL Server Management Studio 19 (SSMS). Para nuevos trabajos de desarrollo, no se recomiendan ni el proveedor OLE DB de SQL Server Native Client (SQLNCLI o SQLNCLI11) ni el proveedor OLE DB de Microsoft para SQL Server (SQLOLEDB) heredado. Cambie al nuevo Controlador Microsoft OLE DB para SQL Server de ahora en adelante.

Realiza la operación de copia masiva.

Sintaxis

  
HRESULT BCPExec(   
      DBROWCOUNT *pRowsCopied);  

Observaciones

El método BCPExec copia los datos de un archivo de usuario en una tabla de base de datos o viceversa, en función del valor del parámetro eDirection usado con el método IBCPSession::BCPInit.

Antes de llamar a BCPExec, llame al método BCPInit con un nombre de archivo de usuario válido. Si no lo hace, se producirá un error. La única excepción es que una consulta vaya a utilizarse para una operación de salida de copia masiva. En ese caso, especifique NULL para el nombre de tabla en el método BCPInit y, a continuación, especifique la consulta mediante la opción BCP_OPTION_HINTS.

El método BCPExec es el único método de copia masiva que es probable que quede pendiente durante un período de tiempo indeterminado. Por lo tanto, es el único método de copia masiva que admite el modo asincrónico. Para usar el modo asincrónico, establezca la propiedad de sesión SSPROP_ASYNCH_BULKCOPY específica del proveedor en VARIANT_TRUE antes de llamar al método BCPExec . Esta propiedad se encuentra disponible en el conjunto de propiedades DBPROPSET_SQLSERVERSESSION. Para comprobar si se ha completado, llame al método BCPExec con los mismos parámetros. Si la copia masiva aún no se ha completado, el método BCPExec devuelve DB_S_ASYNCHRONOUS. También devuelve en el argumento pRowsCopied un recuento de estado del número de filas que se han enviado al servidor o que se han recibido del servidor. Las filas enviadas al servidor no se confirman hasta que se alcanza el final de un lote.

Argumentos

pRowsCopied[out]
Puntero a un valor de tipo DWORD. El método BCPExec rellena el valor DWORD con el número de filas que se han copiado correctamente. Si el argumento pRowsCopied está establecido en NULL, el método BCPExec lo omite.

Valores de código de retorno

S_OK
El método se ha llevado a cabo de forma correcta.

E_FAIL
Se produjo un error específico del proveedor; para obtener información detallada, use la interfaz ISQLServerErrorInfo.

E_UNEXPECTED
No se esperaba la llamada al método. Por ejemplo, no se llamó al método BCPInit antes de llamar a este método. También se produce si la operación se anuló mediante el uso de la opción BCP_OPTION_ABORT y después se llamó al método BCPExec .

E_OUTOFMEMORY
Error de memoria insuficiente.

DB_S_ENDOFROWSET
La operación de copia masiva finalizó y se completó toda la operación de transferencia de datos.

DB_S_ASYNCHRONOUS
Se copió el lote actual de filas. Vuelva a llamar al método BCPExec para transferir el siguiente lote.

DB_S_ERRORSOCCURRED
Se produjeron errores durante la operación de copia masiva y algunas filas no pudieron copiarse. El número de errores sigue siendo menor al número máximo de errores permitidos.

Consulte también

IBCPSession (OLE DB)
Realizar operaciones de copia masiva