IBCPSession::BCPControl (OLE DB)

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

Descargar controlador OLE DB

Establece las opciones de una operación de copia masiva.

Sintaxis

  
HRESULT BCPControl(   
      int eOption,  
      void *iValue);  

Observaciones

El método BCPControl establece varios parámetros de control para operaciones de copia masiva, incluidos el número de errores permitidos antes de cancelar una copia masiva, los números de la primera y última filas que se copian de un archivo de datos y el tamaño del lote.

Este método se utiliza también para especificar la instrucción SELECT que se utiliza en la copia masiva de datos desde SQL Server. Puede establecer el argumento eOption en BCP_OPTION_HINTS y el argumento iValue para tener un puntero a una cadena de caracteres anchos que contenga la instrucción SELECT.

Los valores posibles de eOption son:

Opción Descripción
BCP_OPTION_ABORT Detiene una operación de copia masiva que ya está en curso. Puede llamar al método BCPControl con un argumento eOption de BCP_OPTION_ABORT desde otro subproceso para detener una operación de copia masiva en ejecución. El argumento iValue se pasa por alto.
BCP_OPTION_BATCH El número de filas por lote. El valor predeterminado es 0, que indica todas las filas de una tabla cuando se están extrayendo datos, o todas las filas del archivo de datos del usuario cuando los datos se están copiando en SQL Server. Un valor menor que 1 restablece BCP_OPTION_BATCH al valor predeterminado.
BCP_OPTION_DELAYREADFMT Un valor booleano, si se establece en true, hace que IBCPSession::BCPReadFmt se lea durante la ejecución. Si es false (el valor predeterminado), IBCPSession::BCPReadFmt leerá inmediatamente el archivo de formato. Se producirá un error de secuencia si BCP_OPTION_DELAYREADFMT es true y puede llamar a IBCPSession::BCPColumns o IBCPSession::BCPColFmt.

También se producirá un error de secuencia si se llama a IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)FALSE)) después de llamar a IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE) e IBCPSession::BCPWriteFmt.

Para obtener más información, vea Detección de metadatos.
BCP_OPTION_FILECP El argumento iValue contiene el número de la página de códigos del archivo de datos. Puede especificar el número de la página de códigos, como 1252 u 850, o uno de los valores siguientes:

BCP_FILECP_ACP: los datos del archivo están en la página de códigos de Microsoft Windows del cliente.

BCP_FILECP_OEMCP: los datos del archivo están en la página de códigos OEM del cliente (valor predeterminado).

BCP_FILECP_RAW: los datos del archivo están en la página de códigos de SQL Server.
BCP_OPTION_FILEFMT Número de versión del formato de archivo de datos. Puede ser 80 (SQL Server 2000 [8.x]), 90 (SQL Server 2005 [9.x]), 100 (SQL Server 2008 [10.0.x] o SQL Server 2008 R2 [10.50.x]) o 110 (SQL Server 2012 [11.x]). 110 es el valor predeterminado. Esto resulta útil para exportar e importar datos en formatos admitidos en versiones anteriores del servidor. Por ejemplo, para importar datos obtenidos de una columna de texto en un servidor SQL Server 2000 (8.x) a una columna varchar(max) de un servidor SQL Server 2005 (9.x) o posterior, debe especificar 80. Del mismo modo, si especifica 80 al exportar datos de una columna varchar(max) , se guardan de la misma forma que las columnas de texto en el formato de SQL Server 2000 (8.x) y se pueden importar en una columna de texto de un servidor SQL Server 2000 (8.x).
BCP_OPTION_FIRST La primera fila de datos del archivo o la tabla que se copia. El valor predeterminado es 1; un valor menor que 1 reinicializa esta opción a su valor predeterminado.
BCP_OPTION_FIRSTEX En operaciones de salida de BCP, especifica la primera fila de la tabla de base de datos que se copia en el archivo de datos.

En operaciones de entrada de BCP, especifica la primera fila del archivo de datos que se copia en la tabla de base de datos.

Se espera que el parámetro iValue sea la dirección de un entero de 64 bits con signo que contiene el valor. El valor máximo que se puede pasar a BCPFIRSTEX es 2^63-1.
BCP_OPTION_FMTXML Se utiliza para especificar que el archivo de formato generado debe estar en un formato XML. Está apagado de forma predeterminada y los archivos de formato se guardan como archivos de texto. El formato de archivo XML proporciona mayor flexibilidad, pero con algunas restricciones más. Por ejemplo, no puede especificar el prefijo ni el terminador de un campo simultáneamente, lo que es posible en archivos de formatos anteriores.

Nota: Antes de la versión 18.6.0 de OLE DB Driver, los archivos de formato XML solo se admitían cuando se instalaban herramientas de SQL Server junto con OLE DB Driver for SQL Server.
BCP_OPTION_HINTS El argumento iValue contiene un puntero de cadena de caracteres anchos. La cadena a la que apunta especifica, bien sugerencias de procesamiento de copia masiva de SQL Server, bien una instrucción Transact-SQL que devuelve un conjunto de resultados. Si se especifica una instrucción Transact-SQL que devuelve más de un conjunto de resultados, se omiten todos los conjuntos de resultados posteriores al primero.
BCP_OPTION_KEEPIDENTITY Cuando el argumento iValue está establecido en TRUE, esta opción especifica que los métodos de copia masiva insertan valores de datos proporcionados para las columnas de SQL Server definidas con una restricción de identidad. El archivo de entrada debe proporcionar valores para las columnas de identidad. Si no se establece, se generan nuevos valores de identidad para las filas insertadas. No se tiene en cuenta ningún dato presente en el archivo para las columnas de identidad.
BCP_OPTION_KEEPNULLS Especifica si los valores de datos vacíos del archivo se convertirán en valores NULL en la tabla de SQL Server. Cuando el argumento iValue está establecido en TRUE, los valores vacíos se convierten en NULL en la tabla de SQL Server. Con el valor predeterminado, los valores vacíos se convierten en un valor predeterminado para la columna en la tabla de SQL Server si existe un valor predeterminado.
BCP_OPTION_LAST La última fila que se copia. El valor predeterminado es copiar todas las filas. Un valor menor que 1 reinicia esta opción a su valor predeterminado.
BCP_OPTION_LASTEX En operaciones de salida de BCP, especifica la última fila de la tabla de base de datos que se copia en el archivo de datos.

En operaciones de entrada de BCP, especifica la última fila del archivo de datos que se copia en la tabla de base de datos.

Se espera que el parámetro iValue sea la dirección de un entero de 64 bits con signo que contiene el valor. El valor máximo que se puede pasar a BCPLASTEX es 2^63-1.
BCP_OPTION_MAXERRS El número de errores permitido antes de que la operación de copia masiva genere un error. El valor predeterminado es 10. Un valor menor que 1 reinicia esta opción a su valor predeterminado. La copia masiva impone un máximo de 65.535 errores. Si se intenta establecer esta opción en un valor mayor que 65.535, la opción se establece en 65.535.
BCP_OPTION_ROWCOUNT Devuelve el número de filas afectado por la operación actual (o última) de BCP.
BCP_OPTION_TEXTFILE El archivo de datos no es un archivo binario, sino un archivo de texto. BCP detecta si el archivo de texto es Unicode o no comprobando el marcador de byte Unicode en los primeros 2 bytes del archivo de datos.
BCP_OPTION_UNICODEFILE Cuando se establece en TRUE, esta opción especifica que el archivo de entrada es un formato de archivo de Unicode.

Argumentos

eOption[in]
Establézcalo en una de las opciones de la lista de la sección anterior de notas.

iValue[in]
Valor del argumento eOption especificado. El argumento iValue es una conversión del valor entero a un puntero nulo para permitir la expansión futura a valores de 64 bits.

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 IBCPSession::BCPInit antes de llamar a esta función.

E_OUTOFMEMORY
Error de memoria insuficiente.

Consulte también

IBCPSession (OLE DB)
Realizar operaciones de copia masiva