我有一个大的字符串文本要插入到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的字符串失败。任何指导,甚至调试技巧都将受到高度赞赏。预先感谢。
答案 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
列和对于更新的驱动程序,例如[n]varchar(max)
或DRIVER=ODBC Driver 11 for SQL Server
不会发生。
如果身份验证错误仍然存在,并且您需要帮助,则应该更新驱动程序,然后ask a new question。