Microsoft.ACE.OLEDB.12.0无法执行查询

我有这个SQL代码。 它更新Excel文件中的特定单元格。

SET @cmd = 'UPDATE OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0;Database=C:/sompath/file.xls;HDR=NO;IMEX=0;'',''SELECT F1,F2,F3,F4,F5,F6,F7,F8,F9 FROM [Sheet1$]'') set [F1] = ''Hello World'' where [F1] = ''<field1>''' EXEC(@cmd) 

这段代码在32位成功执行,但在64位服务器(MSSQL Server 2012)中失败。 我在64位得到这个错误:

 OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "No value given for one or more required parameters.". Msg 7320, Level 16, State 2, Line 1 Cannot execute the query "SELECT F1,F2,F3,F4,F5,F6,F7,F8,F9 FROM [Sheet1$]" against OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 

file.xls是一个在32位电脑上创build的excel文件。

有人可以帮我解决这个问题。 我一直在寻找networking,但真的没有得到解决scheme,甚至一些指导解决它。 如果这个问题已经发布和回答,只是请发布确切的链接。

顺便说一下,我已经安装了ACE提供程序和所有需要的设置。 事实上,这个代码工作正常,但没有UPDATE语句:

 DECLARE @cmd VARCHAR(1000) set @cmd = 'SELECT * FROM OPENROWSET(''Microsoft.Ace.OLEDB.12.0'', ''Excel 12.0;Database=C:/sompath/file.xls;HDR=NO;IMEX=0'',[Sheet1$])' EXEC(@cmd) 

谢谢!

Excel文件必须从64位MS Office创build/重新保存。 就这样!