Перевод массового копирования с DB-Library на ODBC
Преобразовать программу массового копирования DB-Library в ODBC легко, так как функции массового копирования, поддерживаемые драйвером SQL SERVER NATIVE CLIENT ODBC, похожи на DB-Library функции массового копирования, за следующими исключениями:
Приложения DB-Library передают указатель на структуру DBPROCESS как первый параметр функций массового копирования. В приложениях ODBC указатель DBPROCESS заменяется дескриптором соединения ODBC.
DB-Library приложения вызывают BCP_SETL перед подключением, чтобы включить операции массового копирования в DBPROCESS. Вместо этого приложения ODBC вызывают SQLSetConnectAttr перед подключением , чтобы включить массовые операции с дескриптором подключения:
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (void *)SQL_BCP_ON, SQL_IS_INTEGER);
Драйвер ODBC SQL Server Native Client не поддерживает обработчики DB-Library сообщений и ошибок. Необходимо вызвать SQLGetDiagRec для получения ошибок и сообщений, вызванных функциями массового копирования ODBC. Версии ODBC функций массового копирования возвращают стандартные коды возврата массового копирования SUCCEED или FAILED, а не коды возврата ODBC, такие как SQL_SUCCESS или SQL_ERROR.
Значения, указанные для параметра DB-Library bcp_bindvarlen , интерпретируются иначе, чем параметр ODBC bcp_bindcbData .
Указанное условие DB-Library значение varlen Значение ODBC cbData Предоставлены значения NULL 0 -1 (SQL_NULL_DATA) Предоставлены данные переменной длины -1 -10 (SQL_VARLEN_DATA) Символьная или двоичная строка нулевой длины Н/Д 0 В DB-Library значение varlen -1 указывает, что предоставляются данные переменной длины, которые в ODBC cbData интерпретируются как означают, что предоставляются только значения NULL. Измените все DB-Library спецификации varlen для -1 на SQL_VARLEN_DATA и все спецификации varlen 0 на SQL_NULL_DATA.
DB-Library bcp_colfmtfile_collen и ODBC bcp_colfmtcbUserData имеют ту же проблему, что и указанные выше параметры bcp_bind varlen и cbData. Измените все DB-Library file_collen спецификации -1 на SQL_VARLEN_DATA и все file_collen спецификации 0 на SQL_NULL_DATA.
Параметр iValue функции bcp_control ODBC является указателем void. В DB-Library значение iValue было целым числом. Приведите значения для odBC iValue к void *.
Параметр bcp_control BCPMAXERRS указывает, сколько отдельных строк может иметь ошибки до сбоя операции массового копирования. Значение по умолчанию для BCPMAXERRS равно 0 (сбой при первой ошибке) в DB-Library версии bcp_control и 10 в версии ODBC. DB-Library приложения, которые по умолчанию зависят от 0 для завершения операции массового копирования, должны быть изменены, чтобы вызвать bcp_control ODBC, чтобы задать для BCPMAXERRS значение 0.
Функция bcp_control ODBC поддерживает следующие параметры, не поддерживаемые DB-Library версией bcp_control:
BCPODBC
Если задано значение TRUE, указывает, что значения datetime и smalldatetime , сохраненные в символьном формате, будут иметь префикс и суффикс escape-последовательности метки времени ODBC. Это относится только к операциям BCP_OUT.
Если параметру BCPODBC присвоено значение FALSE, значение даты и времени , преобразованное в символьную строку, выводится следующим образом:
1997-01-01 00:00:00.000
Если для BCPODBC задано значение TRUE, выводится то же значение даты и времени , что и:
{ts '1997-01-01 00:00:00.000' }
BCPKEEPIDENTITY
Значение TRUE указывает, что функции массового копирования вставляют значения данных, предоставленные для столбцов с ограничениями идентификаторов. Если эти значения не заданы, то для вставляемых строк создаются новые значения идентификаторов.
BCPHINTS
Определяет различные оптимизации для массового копирования. Этот параметр нельзя использовать в версии 6.5 или более ранних версий SQL Server.
BCPFILECP
Задает кодовую страницу файла массового копирования.
BCPUNICODEFILE
Указывает, что файл массового копирования в символьном формате является файлом в Юникоде.
Функция BCP_COLFMT ODBC не поддерживает индикатор file_type SQLCHAR, так как она конфликтует с определением типа ODBC SQLCHAR. Вместо этого используйте SQLCHARACTER для bcp_colfmt.
В версиях ODBC функций массового копирования форматом для работы со значениями datetime и smalldatetime в символьных строках является формат ODBC гггг-мм-дд чч:мм:сс.сс; Значения smalldatetime используют формат ODBC гггг-мм-дд чч:мм:сс.
DB-Library версии функций массового копирования принимают значения datetime и smalldatetime в символьных строках в нескольких форматах:
Формат по умолчанию — ммм дд гггг чч:ммxx, где xx — am или PM.
Символьные строки datetime и smalldatetime в любом формате, поддерживаемом функцией DB-Library dbconvert.
Если флажок Использовать международные параметры установлен на вкладке Параметры DB-Library программы SQL Server Client Network Utility, функции массового копирования DB-Library также принимают даты в формате региональных дат, определенном для параметра языкового стандарта реестра клиентских компьютеров.
Функции массового копирования DB-Library не принимают форматы ODBC datetime и smalldatetime .
Если атрибут инструкции SQL_SOPT_SS_REGIONALIZE установлен в значение SQL_RE_ON, функции массового копирования ODBC принимают даты в региональном формате данных, определенном для локали, установленной в реестре клиентского компьютера.
При выводе денежных значений в символьном формате функции массового копирования ODBC предоставляют четыре цифры точности без разделителей-запятых; DB-Library версии предоставляют только две цифры точности и включают разделители запятых.
См. также:
Выполнение операций массового копирования (ODBC)
Bulk Copy Functions