Проблема вставки большого текста в SQL Server pyodbc - PullRequest
0 голосов
/ 22 апреля 2019

У меня большой текст строки для вставки в столбец в SQL Server 2014 Express (v12.0.2000).Изначально я определил поле как тип text, и данные были вставлены в таблицу без каких-либо проблем.Позже я узнал, что тип данных text устарел и не должен использоваться.Преобразование типа данных в varchar(max) вызвало странную проблему в pyodbc.Когда те же данные вставляются в столбец varchar(max), выдается сообщение об ошибке со следующим сообщением:

[HY000] [Microsoft] [Драйвер ODBC SQL Server] Предупреждение: частичная вставка / обновление.Вставка / обновление столбца (ов) текста или изображения не удалось.(0) (SQLPutData)

, но та же самая вставка прекрасно работает со столбцом text.

Я использовал драйвер {SQL Server} с аутентификацией Windows, когда я изменил его на{SQL Server Native Client 11.0} это начало сбой при аутентификации, поэтому я переключил его обратно на {SQL Server}, так как он работал с типом данных text.

Я изучил некоторые дискуссии, касающиеся подобных проблем, но могне найден случай, который помогает в отладке проблемы.

Я проверил размеры строк, в которых данные были успешно вставлены и не удалось:

  • TEXT: все данные вставлены успешно.
  • VARCHAR(MAX): строка длиной 98566 вставок, но длиной 326235 не срабатывает.

Любые указания, даже советы по отладке, будут высоко оценены.Заранее спасибо.

1 Ответ

1 голос
/ 22 апреля 2019

«Предупреждение: частичная вставка / обновление».ошибка связана с

  • древним DRIVER=SQL Server драйвером ODBC (SQLSRV32.DLL),
  • [n]varchar(max) столбцами и
  • строками длиной более 204800 символов.

Это не происходит с более новыми драйверами, такими как DRIVER=ODBC Driver 11 for SQL Server или DRIVER=ODBC Driver 17 for SQL Server.

Вам следует обновить драйвер, а затем задать новый вопрос , если ошибка аутентификации не устранена и вам нужна помощь в этом.

...