Sql server “返回的数据与列的预期数据长度不匹配”错误,而预期长度要大得多-SQL SERVER 2012

Sql server “返回的数据与列的预期数据长度不匹配”错误,而预期长度要大得多-SQL SERVER 2012,sql-server,database,ms-access,Sql Server,Database,Ms Access,在我的项目中,我正在将Access数据库重建为SQL数据库。为此,我将Access数据传输到SQL数据库。我确保它们都具有相同的结构,并且在SQL数据库中正确修改了访问字段 对于大多数数据,这是有效的。 除了一张桌子。此表给出了以下奇怪的错误消息: OLE DB provider 'Microsoft.ACE.OLEDB.12.0' for linked server 'OPS_JMD_UPDATE' returned data that does not match expected data

在我的项目中,我正在将Access数据库重建为SQL数据库。为此,我将Access数据传输到SQL数据库。我确保它们都具有相同的结构,并且在SQL数据库中正确修改了访问字段

对于大多数数据,这是有效的。 除了一张桌子。此表给出了以下奇怪的错误消息:

OLE DB provider 'Microsoft.ACE.OLEDB.12.0' for linked server 'OPS_JMD_UPDATE' returned data that does not match expected data length for column '[OPS_JMD_UPDATE]...[OrderStatus].Omschrijving'. The (maximum) expected data length is 100, while the returned data length is 21.
下面是有关Access和SQL字段/列的更多信息:

访问类型:短文本 SQL类型:nvarcharMAX 访问其中的列数据:普通字母和&-% . , : 是“不正常的”。 允许的几个空访问记录 Access表中总共有135314条记录 Iv'e将SQL数据类型设置为nvarcharMAX,这样字段就永远不会太小,但这似乎没有什么帮助

*OPS_JMD_更新是链接的Access数据库


是什么导致了这个问题?是因为不允许使用某些字符还是

有1条记录生成了错误。我用TOP select和DESC select锁定了确切的记录,然后使用select ascii替换来删除错误!感谢xQbert,再次感谢您

此处可能与:或故事的关系是显式地将短文本转换为所需的数据类型。may试着投下它,看了看其他的问题谢谢你,但遗憾的是没有效果。首先我尝试将其设置为speicifc长度21,然后我尝试按如下方式强制转换:插入[OrderStatus][Omschrijving]从[OPS_JMD_UPDATE]选择强制转换[Omschrijving]为nvarchar100…[OrderStatus]将插入限制为一个子集或仅几个特定记录。甚至1。这将有助于确定问题是否与特定记录数据或连接/其他内容有关,然后我们可以仔细检查它。@xQbert好主意!我做了一个TOP和DESC来确定它给出错误的确切记录。这似乎只是一张唱片。然而奇怪的是,它似乎没有什么问题。。。它在生成错误的列中没有值。。像许多其他人一样。其他字段对于特定记录似乎也没有问题。我想说的是,有一个非显示字符没有遵循正确的编码。它看起来像一个空间,但实际上不是。写一个select,尝试用空字符串替换所有空格。任何留下来作为空间的东西都是我所说的数据。从那里,您可以使用查找该字符的Ascii代码,并确定如何处理它。如果你真的不在乎,把数据复制粘贴到记事本上,然后作为更新复制粘贴回来,这样就可以了。记事本通常会删除编码