Convertir un programa de copia masiva de DB-Library a ODBC
Convertir un programa de copia masiva de DB-Library en ODBC es fácil porque las funciones de copia masiva admitidas por el controlador ODBC SQL Server Native Client son similares a las funciones de copia masiva de DB-Library, con las siguientes excepciones:
Las aplicaciones DB-Library pasan un puntero a una estructura DBPROCESS como primer parámetro de las funciones de copia masiva. En las aplicaciones ODBC, el puntero a DBPROCESS se reemplaza por un identificador de conexión ODBC.
DB-Library las aplicaciones llaman a BCP_SETL antes de conectarse para habilitar las operaciones de copia masiva en un DBPROCESS. En su lugar, las aplicaciones ODBC llaman a SQLSetConnectAttr antes de conectarse para habilitar las operaciones masivas en un identificador de conexión:
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (void *)SQL_BCP_ON, SQL_IS_INTEGER);
El controlador ODBC SQL Server Native Client no admite DB-Library controladores de errores y mensajes; debe llamar a SQLGetDiagRec para obtener errores y mensajes generados por las funciones de copia masiva odbc. Las versiones ODBC de las funciones de copia masiva devuelven los códigos de retorno de copia masiva estándar, es decir, SUCCEED o FAILED, no códigos de retorno de estilo ODBC, como SQL_SUCCESS o SQL_ERROR.
Los valores especificados para el parámetro DB-Library bcp_bindvarlen se interpretan de forma diferente al parámetro CBData de ODBC bcp_bind.
Condición indicada DB-Library valor varlen Valor cbData de ODBC Se suministraron valores NULL 0 -1 (SQL_NULL_DATA) Se suministraron datos variables -1 -10 (SQL_VARLEN_DATA) Cadena binaria o carácter de longitud cero N/D 0 En DB-Library, un valor varlen de -1 indica que se proporcionan datos de longitud variable, que en ODBC cbData se interpreta para significar que solo se proporcionan valores NULL. Cambie cualquier DB-Library especificaciones varlen de -1 a SQL_VARLEN_DATA y las especificaciones varlen de 0 a SQL_NULL_DATA.
El file_collen DB-Library bcp_colfmty los parámetros cbUserData de ODBC bcp_colfmt tienen el mismo problema que los parámetros varlen y cbData de bcp_bind indicados anteriormente. Cambie las especificaciones de DB-Library file_collen de -1 a SQL_VARLEN_DATA y las especificaciones de file_collen de 0 a SQL_NULL_DATA.
El parámetro iValue de la función ODBC bcp_control es un puntero void. En DB-Library, iValue era un entero. Convierta los valores de ODBC iValue en void *.
La opción bcp_control BCPMAXERRS especifica cuántas filas individuales pueden tener errores antes de que se produzca un error en una operación de copia masiva. El valor predeterminado de BCPMAXERRS es 0 (error al producirse el primer error) en la versión DB-Library de bcp_control y 10 en la versión ODBC. DB-Library las aplicaciones que dependen del valor predeterminado de 0 para finalizar una operación de copia masiva deben cambiarse para llamar al bcp_control ODBC para establecer BCPMAXERRS en 0.
La función odbc bcp_control admite las siguientes opciones no admitidas por la versión de DB-Library de bcp_control:
BCPODBC
Cuando se establece en TRUE, especifica que los valores datetime y smalldatetime guardados en formato de caracteres tendrán el prefijo y el sufijo de secuencia de escape de marca de tiempo ODBC. Esto solo se aplica a las operaciones BCP_OUT.
Con BCPODBC establecido en FALSE, se genera un valor datetime convertido en una cadena de caracteres como:
1997-01-01 00:00:00.000
Con BCPODBC establecido en TRUE, se genera el mismo valor datetime que:
{ts '1997-01-01 00:00:00.000' }
BCPKEEPIDENTITY
Cuando se establece en TRUE, especifica que las funciones de copia masiva deben insertar valores de datos suministrados para las columnas con restricciones de identidad. Si no se establece, se generan nuevos valores de identidad para las filas insertadas.
BCPHINTS
Especifica diversas optimizaciones de copia masiva. Esta opción no se puede usar en la versión 6.5 o versiones anteriores de SQL Server.
BCPFILECP
Especifica la página de códigos del archivo de copia masiva.
BCPUNICODEFILE
Especifica que un archivo de copia masiva en modo de carácter es un archivo Unicode.
La función odbc bcp_colfmt no admite el indicador de file_type de SQLCHAR porque entra en conflicto con la definición de tipo ODBC SQLCHAR. Use SQLCHARACTER en su lugar para bcp_colfmt.
En las versiones ODBC de funciones de copia masiva, el formato para trabajar con valores datetime y smalldatetime en cadenas de caracteres es el formato ODBC de aaaa-mm-dd hh:mm:ss.ssss; Los valores smalldatetime usan el formato ODBC de aaaa-mm-dd hh:mm:ss.
Las versiones DB-Library de las funciones de copia masiva aceptan valores datetime y smalldatetime en cadenas de caracteres con varios formatos:
El formato predeterminado es mmm dd aaaa hh:mmxx , donde xx es AM o PM.
cadenas de caracteres datetime y smalldatetime en cualquier formato admitido por la función dbconvert de DB-Library.
Cuando la casilla Usar configuración internacional está activada en la pestaña Opciones de DB-Library de la utilidad de red de cliente de SQL Server, las funciones de copia masiva de DB-Library también aceptan fechas en el formato de fecha regional definido para la configuración regional del registro del equipo cliente.
Las funciones de copia masiva DB-Library no aceptan los formatos odbc datetime y smalldatetime .
Si el atributo SQL_SOPT_SS_REGIONALIZE de la instrucción está establecido en SQL_RE_ON, las funciones de copia masiva de ODBC aceptan fechas en el formato de fecha regional definido para la configuración regional del Registro del equipo cliente.
Al generar valores money en formato de caracteres, las funciones de copia masiva ODBC proporcionan cuatro dígitos de precisión y ningún separador de comas; DB-Library versiones solo proporcionan dos dígitos de precisión e incluyen los separadores de comas.
Consulte también
Realizar operaciones de copia masiva (ODBC)
Bulk Copy Functions