从Excel

时间:2015-08-19 08:26:12

标签: sql-server excel linked-server

我用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不等。 我已经在注册表中将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。

1 个答案:

答案 0 :(得分:1)

经过数月的谷歌搜索和阅读后,我找到了解决这个问题的方法。原来,将TypeGuessRow默认值更改为零有效,但我确实编辑了错误的注册表项。 Excel 12.0的正确密钥如下:

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

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