SQL Server pyodbc大文本插入问题

时间:2019-04-22 07:22:30

标签: python sql-server pyodbc

我有一个大的字符串文本要插入到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 个答案:

答案 0 :(得分:1)

“警告:部分插入/更新。”错误与

有关
  • 古老的.on('deselect', function (e, dt, type) { var dt_indexes = dt[0] //Need to access dt[0] to get row indexes if (type === 'row') { $.each( dt_indexes, function ( index ) { var row = dataTable.row( dt_indexes[index] ); var optionSelected = $('option:selected', $(row.node()).find('td:eq(6)')); var valueSelected = $(optionSelected).val(); var cell = dataTable.cell($(row.node()), 6); cell.data(valueSelected); $(row.node()).find('td:eq(6)').html( //change to td:eq(4) in final version valueSelected ) if(!Category && !Category.length) { writeCell($(row.node()).find('select')); }; ODBC驱动程序(SQLSRV32.DLL)
  • DRIVER=SQL Server列和
  • 字符串长于204800个字符。

对于更新的驱动程序,例如[n]varchar(max)DRIVER=ODBC Driver 11 for SQL Server不会发生。

如果身份验证错误仍然存​​在,并且您需要帮助,则应该更新驱动程序,然后ask a new question