У меня есть этот код sql. Он обновляет определенную ячейку в файле excel.Microsoft.ACE.OLEDB.12.0 Не удается выполнить запрос
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). Я получаю эту ошибку в 64bit:
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
представляет собой файл Excel создан в 32-битном компьютере.
Может кто-нибудь помочь мне в этом вопросе. Я искал в сети, но на самом деле не получил решения или даже руководство по его решению. Если этот вопрос уже отправлен и дан ответ, просто сообщите, пожалуйста, точную ссылку.
Кстати, я уже установил провайдера 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)
Спасибо!
Интересная проблема. Следующая статья, похоже, дает длительное обсуждение с различными попытками разрешения и, наконец, решением (по крайней мере для OP). http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/ace ... Удачи. – Seymour
У вас есть * оба * установлены 32-разрядные и 64-разрядные драйверы ACE OLEDB 12? – billinkc
@billinkc, я не админ, но я думаю, что есть только 64-битная версия ACE. Будет ли это важно? – Temp