从Excel中selectMicrosoft.ACE.OLEDB.12.0文本截断错误

我已经GOOGLE了整个宇宙,但没有成功。 当我运行查询时出现以下错误:

OLE DB provider 'Microsoft.ACE.OLEDB.12.0' for linked server '(null)' returned truncated data for column '[Microsoft.ACE.OLEDB.12.0].Short Description'. The actual data length is 540 and truncated data length is 510. 

实际的数据长度从510以上到1700多不等。我已经在registry中将TypeGuessRow设置更改为'0',我已经按提到的列长度排列了excel行,但仍然不好。 这是我的查询:

 insert into SRC_REMEDY_RAW select * from openrowset ('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=D:\ReleaseTeam_db\data\data_src.xlsx;HDR=YES;IMEX=1', 'select * from [Murex - SW Business Application$]') where [Ticket ID] is not null and [Problem Owner] is not null order by len(cast([Solution Description] as nvarchar(MAX))) desc, len(cast([Short Description] as nvarchar(MAX))) desc; 

我正在使用SQL Server 2014 Express。

经过几个月的谷歌search和阅读终于find了解决这个问题。 原来,改变TypeGuessRow默认值为零的作品,但我没有编辑一个错误的registry项。 Excel 12.0的正确密钥如下所示:

 HKEY_LOCAL_MACHINE\Software\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel\TypeGuessRows 

更改此条目后,提供程序工作正常,没有截断错误。