繁体   English   中英

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

[英]Microsoft.ACE.OLEDB.12.0 Cannot execute the query

我有这个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位pc创建的excel文件。

有人可以帮我解决这个问题。 我一直在网上搜索,但实际上没有得到解决方案,甚至没有解决它的指南。 如果这个问题已经发布并得到解答,请发布确切的链接。

顺便说一下,我已经安装了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)

谢谢!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM