代码之家  ›  专栏  ›  技术社区  ›  TonyP

来自Excel的ODS查询返回虚假列名

  •  2
  • TonyP  · 技术社区  · 15 年前

    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 回复  |  直到 15 年前
        1
  •  2
  •   Jim    12 年前

    我遇到了一个在第一行有前导空格的表,用作字段名。电子表格设置为链接服务器

    错误消息是:

    无法执行查询“选择 Tbl1002 . Participant Col1019 DATASET$ Tbl1002型 “针对OLE DB提供程序”微软.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' ;
    
        2
  •  1
  •   mellamokb Dan    15 年前

    对于dBase的查询,我收到了同样的错误。该错误是由于对来自OPENDATASOURCE的查询结果达到255列限制而导致的。我相信这条消息只是来自一个内部调用,该调用要求SQLServer将结果加载到内存中,并将它们解析到一个结果集中。它们不代表真实的列名或任何与最终输出相关的内容。

    我通过指定一个字段名总数少于255的硬编码列列表解决了这个问题。

        3
  •  0
  •   TonyP    15 年前

    硬编码列名对我来说不是一个选项,因为我之前既不知道列的数量也不知道它们的名称。 我通过具体说明来解决这个问题

    从OpenDataSource中选择*微软.ACE.OLEDB.12.0','Data Source=“\xxxx\x.xls”;Extended Properties=“Excel 12.0;HDR=Yes;IMEX=1”')…组

    希望我所学到的能对别人有所帮助

        4
  •  0
  •   Reversed Engineer    11 年前

    当我删除@Jim提到的字段名中的前导空格(即电子表格中的列标题)时,错误就消失了,但是:

    • 复制的
    推荐文章