ODS-запрос из Excel возвращает ложные имена столбцов - PullRequest
2 голосов
/ 23 сентября 2010

При извлечении листа Excel из Именованной области возвращаются ложные имена столбцов

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 `Tbl1005`.`CUSTOMER` AS `Col1031`,`Tbl1005`.`NAME` AS `Col1032`,`Tbl1005`.` 1AA00` AS `Col1033`,`Tbl1005`.` 1AB00` AS `Col1034`,`Tbl1005`.` 1AC00` AS `Col1035`,`Tbl1005`.` 1AD00` AS `Col1036`,`Tbl1005`.` 1AE00` AS `Col1037`,`Tbl1005`.` 1AF00` AS `Col1038`,`Tbl1005`.` 1AG00` AS `Col1039`,`Tbl1005`.` 1AH00` AS `Col1040`,`Tbl1005`.` 1AL00` AS `Col1041`,`Tbl1005`.` 1AM00` AS `Col1042`,`Tbl1005`.` 1AN00` AS `Col1043`,`Tbl1005`.` 1AO00` AS `Col1044`,`Tbl1005`.` 1AP00` AS `Col1045`,`Tbl1005`.` 1AQ00` AS `Col1046`,`Tbl1005`.` 1ZA00` AS `Col1047`,`Tbl1005`.` 1ZD00` AS `Col1048`,`Tbl1005`.` 4AN00` AS `Col1049`,`Tbl1005`.` 4AO00` AS `Col1050`,`Tbl1005`.` 4ZB00` AS `Col1051`,`Tbl1005`.` 5ZA00` AS `Col1029` FROM `CPGROUPS` `Tbl1005`" against OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

Как мне восстановить это?

Ответы [ 4 ]

2 голосов
/ 20 сентября 2013

Я столкнулся с этим с листом, у которого были первые пробелы в первом ряду, который использовался как имя поля.Электронная таблица была настроена как связанный сервер

Сообщение об ошибке было:

Сообщение 7320, уровень 16, состояние 2, строка 1 Не удалось выполнить запрос "SELECT Tbl1002. Participant ASCol1019 ОТ DATASET$ Tbl1002 "для поставщика OLE DB" Microsoft.ACE.OLEDB.12.0 "для связанного сервера" XXXXX ".

После удаления начального пробела он работал.

Связанный сервер был настроен с использованием:

exec sp_addlinkedserver @server = N'XXXXX', 
@srvproduct=N'Excel', @provider=N'Microsoft.ACE.OLEDB.12.0', 
@datasrc=N'\\somewhere\some_dir\mysheet.xlsx',
@provstr=N'EXCEL 12.0;Hdr=Yes' ;
1 голос
/ 02 ноября 2010

Я получил эту же ошибку для запроса к dBase. Ошибка вызвана достижением ограничения в 255 столбцов для результата запроса из OPENDATASOURCE. Я считаю, что сообщение пришло только из внутреннего вызова SQL Server, который загружает результаты в память и анализирует их в наборе результатов. Они не представляют реальные имена столбцов или что-либо, связанное с окончательным выводом.

Я решил проблему в моем случае, указав жестко закодированный список столбцов с общим количеством полей менее 255.

0 голосов
/ 12 февраля 2015

Ошибка исчезла, когда я удалил начальные пробелы в именах полей, как упоминалось @Jim, то есть заголовки столбцов в электронной таблице, но также:

  • Дублированные имена полей - я думаю, что это была самая большая проблема
  • Конечные имена полей
0 голосов
/ 03 ноября 2010

Жесткое кодирование имен столбцов для меня не вариант, так как я бы не знал ни количества столбцов, ни их имен до этого.Я решил проблему, указав

select * from OpenDataSource ('Microsoft.ACE.OLEDB.12.0', 'Data Source = "\ xxxx \ x.xls"; Расширенные свойства = "Excel 12.0; HDR = Да"; IMEX = 1 "') ... cpGroups

и Allow Inproc = True, только нулевой уровень = 1 для поставщика (ACE.Oledbb.12.0) в SQL Server

Надеюсь, чтоя узнал, может помочь кому-то

С уважением

...