2013-12-11 3 views
0

У меня есть этот код 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) 

Спасибо!

+0

Интересная проблема. Следующая статья, похоже, дает длительное обсуждение с различными попытками разрешения и, наконец, решением (по крайней мере для OP). http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/ace ... Удачи. – Seymour

+0

У вас есть * оба * установлены 32-разрядные и 64-разрядные драйверы ACE OLEDB 12? – billinkc

+0

@billinkc, я не админ, но я думаю, что есть только 64-битная версия ACE. Будет ли это важно? – Temp

ответ

2

Файл excel должен быть создан/сохранен из 64-битного MS Office. Это все!

+0

Кстати, я действительно не хочу отвечать на собственные вопросы. Я отметил это как ответ, так что другие, имеющие ту же проблему, будут руководствоваться и легко найти ответ на эту проблему. Это второй раз. – Temp

+0

Если оставить его открытым, это будет болью. – Rob

Смежные вопросы