Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Inicializa la estructura de copia masiva, realiza alguna comprobación de errores, comprueba que los nombres de archivo de datos y formato son correctos y, a continuación, los abre.
Sintaxis
HRESULT BCPInit(
const wchar_t *pwszTable,
const wchar_t *pwszDataFile,
const wchar_t *pwszErrorFile,
inteDirection);
Observaciones
Se debe llamar al método BCPInit antes de cualquier otro método de copia masiva. El método BCPInit realiza las inicializaciones necesarias para una copia masiva de datos entre la estación de trabajo y SQL Server.
El método BCPInit examina la estructura de la tabla de origen o destino de la base de datos, no del archivo de datos. Especifica los valores de formato de datos para el archivo de datos en función de cada columna de la tabla de base de datos, la vista o el conjunto de resultados SELECT. Esta especificación incluye el tipo de datos de cada columna, la presencia o ausencia de una longitud o cadenas de bytes de terminación o indicador nulo en los datos y el ancho de los tipos de datos de longitud fija. El método BCPInit establece estos valores de la siguiente manera:
El tipo de datos especificado es el tipo de datos de la columna de la tabla de base de datos, la vista o el conjunto de resultados de una instrucción SELECT. El tipo de datos se enumera mediante tipos de datos nativos de SQL Server especificados en el archivo de encabezado de SQL Server Native Client (sqlncli.h). Sus valores están en el patrón de BCP_TYPE_XXX. Los datos se representan en su forma de equipo. Es decir, los datos de una columna de tipo de datos entero se representan mediante una secuencia de cuatro bytes que es big-o little-endian basada en el equipo que creó el archivo de datos.
Si un tipo de datos de base de datos es de longitud fija, los datos del archivo de datos también serán de longitud fija. Los métodos de copia masiva que procesan datos (por ejemplo, IBCPSession::BCPExec) analizan filas de datos que esperan que la longitud de los datos del archivo de datos sea idéntica a la longitud de los datos especificados en la tabla de base de datos, la vista o la lista de columnas SELECT. Por ejemplo, los datos de una columna de base de datos definida como
char(13)deben representarse mediante 13 caracteres para cada fila de datos del archivo. Los datos de longitud fija pueden tener como prefijo un indicador nulo si la columna de base de datos permite valores nulos.Al copiar datos en SQL Server, el archivo de datos debe tener datos para cada columna de la tabla de base de datos. Al copiar datos desde SQL Server, los datos de todas las columnas de la tabla de base de datos, la vista o el conjunto de resultados SELECT se copian en el archivo de datos.
Al copiar datos en SQL Server, la posición ordinal de una columna del archivo de datos debe ser idéntica a la posición ordinal de la columna de la tabla de base de datos. Al copiar datos desde SQL Server, el método BCPExec coloca los datos en función de la posición ordinal de la columna en la tabla de base de datos.
Si un tipo de datos de base de datos es variable de longitud (por ejemplo,
varbinary(22)) o si una columna de base de datos puede contener valores NULL, los datos del archivo de datos tienen como prefijo un indicador length/null. El ancho del indicador varía en función del tipo de datos y de la versión de copia masiva. La opción del método IBCPSession::BCPControl BCP_OPTION_FILEFMT proporciona compatibilidad entre los archivos de datos de copia masiva anteriores y los servidores que ejecutan versiones posteriores de SQL Server indicando cuándo el ancho de los indicadores de los datos es más estrecho de lo esperado.
Nota:
Para cambiar los valores de formato de datos especificados para un archivo de datos, use los métodos IBCPSession::BCPColumns e IBCPSession::BCPColFmt .
Las copias masivas en SQL Server se pueden optimizar para las tablas que no contienen índices estableciendo la opción de base de datos seleccionar en o bulkcopy.
Argumentos
pwszTable[in]
Nombre de la tabla de base de datos de la que se va a copiar o no. El nombre puede incluir el nombre de la base de datos o el nombre del propietario. Por ejemplo, "pubs.username.titles", "pubs.. titles", "username.titles".
Si el argumento eDirection se establece en BCP_DIRECTION_OUT, el argumento pwszTable puede ser el nombre de una vista de base de datos.
Si el argumento eDirection se establece en BCP_DIRECTION_OUT y se especifica una instrucción SELECT mediante el método BCPControl antes de llamar al método BCPExec , el argumento pwszTable debe establecerse en NULL.
pwszDataFile[in]
Nombre del archivo de usuario del que se va a copiar o no.
pwszErrorFile[in]
Nombre del archivo de error que se va a rellenar con mensajes de progreso, mensajes de error y copias de las filas que no se pudieron copiar de un archivo de usuario a una tabla. Si el argumento pwszErrorFile se establece en NULL, no se usa ningún archivo de error.
eDirection[in]
Dirección de la operación de copia, ya sea BCP_DIRECTION_IN o BCP_DIRECTION _OUT. BCP_DIRECTION _IN indica una copia de un archivo de usuario a una tabla de base de datos; BCP_DIRECTION _OUT indica una copia de una tabla de base de datos en un archivo de usuario.
Valores de código de retorno
S_OK
El método se realizó correctamente.
E_FAIL
Error específico del proveedor para obtener información detallada, use la interfaz ISQLServerErrorInfo .
E_MEMORIA_INSUFICIENTE
Error de memoria insuficiente.
E_INVALIDARG
No se especificó correctamente uno o varios de los argumentos. Por ejemplo, se dio un nombre de archivo no válido.
Véase también
IBCPSession (OLE DB)
Realización de operaciones de copia masiva